如何阻止无休止的EJB 3计时器?

meb*_*ada 17 java jboss timer ejb-3.0

我是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");

 }
}
Run Code Online (Sandbox Code Playgroud)

然后叫它

  timer = timerService.createTimer(10,  5000, null);
Run Code Online (Sandbox Code Playgroud)

它运作良好.我创建了一个客户端类,它调用一个创建计时器的方法和一个在计时器超时时调用的方法.

我忘记打电话取消然后它不会停止.redeploy取消呼叫从不停止它.重启Jboss 4.2.3从不停止它.我怎么能停止EJB计时器?谢谢你的帮助.

Dav*_*nni 27

    public void stop(String timerName) {
    for(Object obj : timerService.getTimers()) {
        Timer t = (Timer)obj;
        if (t.getInfo().equals(timerName)) {
        t.cancel();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 三年后,非常感谢:) (2认同)