我有一个Java项目运行Wildfli10.1 Final。
我正在以编程方式使用javax.ejb.TimerService创建一些计时器,如下所示:
timerService.createTimer(new Date(), null);现在,我试图在下一次项目部署时取消这些计时器,因为每次我重新部署项目或重新启动服务器时,这些计时器仍然存在。
为此,我尝试使用Singleton Startup bean,如下所示:
@Startup
@Singleton
public class TimerKiller {
@PostConstruct
public void killTimers() {
timerService.getAllTimers().forEach(timer -> timer.cancel());
}
@Resource
TimerService timerService;
}但是,我有个例外:
java.lang.IllegalStateException: WFLYEJB0325:无法在非单例bean的生命周期回调中调用计时器服务方法。
这是堆栈跟踪中的最后一个异常(最后一个异常是由。
我似乎不明白这是什么意思。我试过在谷歌上搜索,但没什么结果。
发布于 2018-01-18 07:24:10
你用的是javax.ejb.Singleton还是javax.inject.Singleton。确保您正在使用javax.ejb.Singleton。
您还可以使用例如SingleActionTimer并将其指定为非持久性的:
TimerConfig tc = new TimerConfig(null, false);
timerService.createSingleActionTimer(new Date(), tc);https://stackoverflow.com/questions/48312400
复制相似问题