当前位置: 代码迷 >> java >> 在Weblogic服务器中热重新部署期间,多次调用EJB @Timeout方法
  详细解决方案

在Weblogic服务器中热重新部署期间,多次调用EJB @Timeout方法

热度:99   发布时间:2023-08-02 11:01:53.0

我们有以下简单的应用程序:一个具有@Timeout方法的@Singleton bean和一个启动计时器的servlet。 第一次部署后,我们看到该方法每2秒调用一次-这是预期的。 然后,在热重新部署之后,我们看到该方法在2秒内被调用了两次。 经过几次重新部署后,在同一2秒钟内多次调用该方法。 重新启动服务器没有帮助。 请参见下面的代码:

import javax.ejb.*;

@Remote(TimerRemote.class)
@Singleton
public class TimerBean implements TimerRemote {
  @Resource
  private SessionContext context;

  public void startTimer() {
    context.getTimerService().createTimer(2000,2000,null);    
  }

  @Timeout
  public void timeoutCallback(javax.ejb.Timer timer) {
    System.out.println("timeoutCallback is called: " + timer);
  }
}

在给定的间隔时间之后,应调用@Timeout方法。 当前方法在一秒钟内被多次调用。

默认情况下,该计时器是永久性的,并且根本不会取消。

请参考官方的 。

如果您不需要计时器是持久的,则最好使用@Schedule并设置persistent=false 或尝试以编程方式自行控制计时器的生命周期。

  相关解决方案