【发布时间】:2015-01-11 21:25:55
【问题描述】:
我的设置: NetBeans 8.0.2 在 Glassfish 4.2 上运行 EJB3.2 的 JEE7
你好,我启动了一个定时器服务
@Schedule(second = "*/10", minute = "*", hour = "*", persistent = false)
public void chronJobSySODate() {
System.out.println("Timer event: " + new Date());
}
我在另一个 Bean 中使用 @PostConstruct 注解调用了这个方法
@PostConstruct
public void startChronJob(){
chronJobBean.chronJobSySODate();
}
尽管我现在虽然因为persistent = false 而杀死 Glassfish 后计时器会消失,但即使在同一 Glassfish 服务器上运行的其他 NetBeans 项目中,它仍然存在。
我已经看过这个 StackOverflow 线程 Is there a way to stop/re-start ejb 3.1 automatic timer during runtime?
所以我尝试了
import javax.annotation.Resource;
import javax.ejb.TimerService;
@Resource
TimerService timerService;
public void cancelAllTimers() {
System.out.println("cancelAllTimers");
for (Timer timer : timerService.getTimers()) {
System.out.println("Canceling Timer: info: " + timer.getInfo());
timer.cancel();
}
}
但关于 timerService 变量,没有计时器(但计时器一直在运行。
【问题讨论】:
标签: jakarta-ee timer ejb