Java 如何在EJB3中创建同步计时器?

Java 如何在EJB3中创建同步计时器?,java,jakarta-ee,weblogic,ejb-3.0,Java,Jakarta Ee,Weblogic,Ejb 3.0,我在EJB3中使用计时器。我需要完成以下要求 例如:假设我创建了一个有效期为10分钟的计时器,初始计时器启动,它正在执行一些需要更多时间(比如15分钟)的任务。同时,服务器将启动另一个同名计时器,并且已达到到期时间。如果现有计时器仍在运行,我想限制服务器启动另一个计时器 我还想停止所有计时器,但当我使用timer.getInfo()并获取计时器名称时,应用程序将挂起 请帮助解决此问题。您所创建的似乎是一个间隔计时器/计划程序,它在某个间隔后继续执行,而不考虑以前的操作 尝试手动创建计时器,在标记

我在EJB3中使用计时器。我需要完成以下要求

例如:假设我创建了一个有效期为10分钟的计时器,初始计时器启动,它正在执行一些需要更多时间(比如15分钟)的任务。同时,服务器将启动另一个同名计时器,并且已达到到期时间。如果现有计时器仍在运行,我想限制服务器启动另一个计时器

我还想停止所有计时器,但当我使用
timer.getInfo()
并获取计时器名称时,应用程序将挂起


请帮助解决此问题。

您所创建的似乎是一个间隔计时器/计划程序,它在某个间隔后继续执行,而不考虑以前的操作

尝试手动创建计时器,在标记为@Startup的bean中创建它,并使用应用程序启动进行初始化,可以进一步参考


因此,一旦它在应用程序启动时创建,它将创建一个计时器链。因此,即使您的任务比平时花费更多的时间,也只有在前一个计时器完成/到期后才会创建下一个任务。

您应该发布一些代码。这将极大地帮助人们帮助你!
//---

     @Timeout
     public void execute(Timer timer){

       /*
          -- Time consuming computation
       */

        createTimer(sec, min, hour)
     }

//---