背景线程

时间:2011-11-21 22:04:37

标签: java-ee

我正在使用Websphere Application Server创建一个典型的Web应用程序,其中UI是JSP,有一个Controller,一个会话EJB和一个数据库。我实现了一个通知系统,它作为一个单独的线程在后台运行。我为此目的使用了WorkManager。

我的问题是,我想启动WorkManager,而不必为不同用户启动的每个并行会话创建会话或EJB实例。它不应该是基于会话的。 现在,WorkManager线程在EJB实例化时启动,因此如果有3个连接,则有3个WorkManager实例。

单身会话bean是个好主意吗?或者是否有某个地方我可以使用'main()'方法进行调用,或类似的东西?

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为你有几种选择:

  • 使用servlet上下文侦听器(在启动/停止WAR模块时调用)提交工作。
  • 使用在启动/停止应用程序时调用一次的启动Bean(特定于WebSphere的API)。
  • 使用引用计数方法跟踪EJB实例的数量。您在创建第一个实例时提交工作(并在销毁最后一个实例时将其停止)。请注意,这将延迟工作的开始,直到第一次向EJB发出请求为止。
  • 在WebSphere 8(支持Java EE 6)中,您可以使用单例会话bean。