0

我在 JSP 中有一个会话 bean,在那个 bean 中我正在启动一个休眠 10 秒并再次执行的线程。我面临的问题是,在注销后这个线程也继续运行。

有人可以帮助如何阻止它运行吗?

4

2 回答 2

1

根据EJB 规范,从 EJB 启动线程是非法的。参照。第 21.2.2 节(第 593 页):

“企业 bean 不得尝试管理线程。企业 bean 不得尝试启动、停止、暂停或恢复线程,或更改线程的优先级或名称。企业 bean 不得尝试管理线程组。”

使用 EJB 可能有不同的解决方案,或者您可能需要使用不同的框架。这取决于您到底想要完成什么。

于 2013-01-10T08:37:26.740 回答
0

从 servlet 启动线程不是一个好主意,因为如果您有很多用户,您可能会耗尽资源(内存和 CPU)。尤其是用数据库访问会出现奇怪的行为!

添加一个 Quartz 计时器 (http://quartz-scheduler.org),它每 10 秒触发一次,并处理一个已订阅会话 bean 的列表。在用户注销时,再次从您的服务中取消订阅您的 bean。

于 2013-01-10T08:36:51.040 回答