java - EJB3.0 容器中的单个后台线程

标签 java jakarta-ee ejb-3.0

我们需要在 EJB3.0 容器中运行内务处理线程。我们目前有一个“TimerService”@Stateless EJB(必需,因为它注入(inject)了其他@EJB),它在调用 startTimer() 方法时创建一个间隔 EJB 计时器。此计时器线程应该只有一个实例。当前的解决方案涉及从我们的一个 servlet 的 init() 方法调用 startTimer(),其中 servlet 在启动时使用 web.xml 强制加载,但这感觉像是巧合行为,而不是正确的做事方式.我们已经遇到了一个问题,因为其他人对该 servlet 进行了子类化,这意味着 init() 被调用了两次,这意味着有两个计时器线程。

感觉这不是一个不寻常的要求,那么执行此操作的正确方法是什么(如果有的话)?在我看来,应该有一种简单的方法可以让容器在启动时启动一个线程,而不必将其绑定(bind)到容器中的其他资源。

最佳答案

对于 EJB < 3.1,您将必须获得特定于应用程序服务器或 hackish。由于您提到您正在使用 JBoss,因此您可以使用已定义生命周期方法的 @Management 标记。

关于java - EJB3.0 容器中的单个后台线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335549/

相关文章:

Java 相当于 PHP 的 call_user_func()

java - 使用 JDBC 领域进行身份验证

java - 在 EJB 远程接口(interface)中使用缓存

java - 如何将字符串数组分组到 map ?

java - 使用带有 Maven 插件的 Eclipse,我应该如何设置我的构建以便将其部署到 tomcat?

java - 嵌入式 Jetty,在给定时间后终止请求

eclipse - 使用 Macbook PRO 在服务器 tomcat 上运行 servlet 时出现 404 错误

javascript - 如何复制表中的特定行(JS/JQuery)?

java - EJB/JPA 事务边界

java - 即使超时后也能完成 EJB3 上的工作