这可能是一个愚蠢的问题,但是可以将EJB专用于管理整个容器的所有计时器吗?我不知道如何实现这一点,因为我不是所有经验丰富的Java EE,但我正在考虑可以访问这个计时器bean的各个会话bean,并且会话bean传入一个函数指针与作业本身的元数据一起?在计时器bean之上,可以构建一个GUI或管理框架,至少可以看到正在运行的作业及其当前状态?
基本上我需要/希望在使用EJB 3.1计时器的同时拥有Quartz的一些功能(能够停止,启动,修改作业)。试图弄清楚这是否是一个遥远的可能性。
编辑:有些人已经注意到,问题的症结在于计时器服务无法获取整个容器的所有计时器。我的想法是在一个特殊的计时器bean中创建所有计时器,可以管理所有计时器。问题是我不知道如何做到这一点,或者这是否可行。我已经玩过传递函数指针(尽可能接近java中的它们)到计时器bean以及时序参数,但这看起来真的很糟糕。
答案 0 :(得分:0)
您可能正在寻找javax.ejb.TimerService。将它注入你的bean:
@Resource
private SessionContext sessionContext;
然后,作为示例,您可以遍历所有计时器:
TimerService timerService = sessionContext.getTimerService();
for (Timer timer : timerService.getTimers()) {
timer.cancel(); //etc.
}