从Java servlet调用线程

时间:2011-04-23 16:08:35

标签: java servlets thread-safety

我正在开发一个应用程序,它使用servlet来获取和设置最终用户使用的JSP的数据。在写入数据库之前或从数据库中检索之后,所有数据都由处于会话状态的servlet操作。

但是其中一些数据库操作非常冗长,其中有很多IO涉及动态创建表或将数据插入到表中等数据并从中恢复数据等。此过程还需要各种第三方产品,如Weka和Lucene;所以处理器负载很重要。我希望其中一些可能需要一两分钟才能锁定会话。

servlet通常在类中为这些操作调用静态方法,然后返回必要的数据类型。所以这是我的问题;这是合理的,还是更好地将这些操作实现为直接从servlet调用的Java线程,还是需要一个线程管理器?我是新手。

servlet中上面的代码示例如下:

        // Create Data_Miner.
        Data_Miner dm = Data_Miner_ReaderWriter.write(activeUser.getUser(), rssfodm); 

        // Create output.
        if (rssfodm.getDataMinerOutputType() == Data_Miner_Output_Type.DECISION_TREE) {
            Decision_Tree dt = Decision_Tree_ReaderWriter.write(dm); 

两个方法调用都是包含读取/写入相关对象的方法的类中的静态方法。

由于

摩根先生。

1 个答案:

答案 0 :(得分:3)

使用异步处理和类似回调处理程序和邮箱的用户可以回来并在他们准备好后获得结果。

由于您使用的是Java,因此您还可以考虑使用JMS消息驱动的POJO(Spring)或EJB(EJB标准)来接受对运行时间较长的事务的请求。