如何在EJB 3中创建同步计时器?

3
我正在使用EJB 3中的定时器,并有以下需求:
例如:假设我创建了一个到期间隔为10分钟的计时器,初始计时器已启动并正在执行某些任务,需要15分钟才能完成。同时,服务器将启动另一个具有相同名称的计时器,到期时间已到达。如果现有计时器仍在运行,我希望限制服务器启动另一个计时器。
此外,我想停止所有计时器,但是当我使用timer.getInfo()获取计时器的名称时,应用程序会挂起。
请帮助解决此问题。

1
你应该发布一些代码。这将极大地帮助人们帮助你! - jbranchaud
1个回答

2
你创建的似乎是一个间隔定时器/调度器,它在一定时间间隔后继续执行,而不考虑之前的操作。
尝试手动创建计时器,在标记为@Startup的bean中创建它,并在应用程序启动时初始化,可以参考这里
//---

     @Timeout
     public void execute(Timer timer){

       /*
          -- Time consuming computation
       */

        createTimer(sec, min, hour)
     }

//---

因此,一旦在应用程序启动时创建了它,它将创建一个定时器链。因此,即使您的任务需要比平常更长的时间,下一个定时器也只会在上一个定时器完成/到期后才被创建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接