一尘不染

如何停止无尽的EJB 3计时器?

java

我是EJB 3的新手。我使用以下代码启动无尽的EJB 3计时器,然后将其部署在JBOSS 4.2.3上

@Stateless
public class SimpleBean  implements SimpleBeanRemote,TimerService  {

@Resource
TimerService timerService;
private Timer timer ;
@Timeout
public void timeout(Timer timer) {
    System.out.println("Hello EJB");

 }
}

然后叫它

  timer = timerService.createTimer(10,  5000, null);

效果很好。我创建了一个客户端类,该客户端类调用一个创建计时器的方法和一个在计时器超时时调用的方法。

我忘了打电话给cancel,然后它不会停止。redeploy with cancel call从不停止它。重新启动Jboss
4.2.3永远不要停止它。如何停止EJB计时器?感谢您的帮助。


阅读 236

收藏
2020-12-03

共1个答案

一尘不染

    public void stop(String timerName) {
    for(Object obj : timerService.getTimers()) {
        Timer t = (Timer)obj;
        if (t.getInfo().equals(timerName)) {
        t.cancel();
        }
    }
}
2020-12-03