如何在Java EE中启动后台进程

ptr*_*ler 10 java ejb java-ee

我想在Java EE(OC4J 10)环境中启动后台进程.用"新线程"启动一个线程似乎是错误的但是我找不到一个好方法.

在我的特殊情况下,使用JMS队列很困难,因为此方法调用的参数不可序列化.

我还想过onTimeout在会话bean上使用Timer方法,但这不允许我传递参数(据我所知).

是否有任何"正典"方式来处理这样的任务,或者我只需要恢复到"新线程"或者java.concurrent.ThreadPool.

lie*_*f79 14

Java EE通常会尝试从开发人员关注点中删除线程.(它在这方面的成功是一个完全不同的主题).

JMS显然是处理此问题的首选方法.

对于大多数参数,您可以选择强制或伪造序列化,即使它们在默认情况下不可序列化.根据数据,考虑将其包装在可重新加载数据的可序列化对象中.这显然取决于参数和应用.

  • @ptriller根据具体情况,WorkManager是首选方法.它是为许多应用服务器实现的,并允许托管线程创建.http://stackoverflow.com/questions/533783/why-spawning-threads-in-j2ee-container-is-discouraged (4认同)