我想创建一个以特定间隔运行的EJB Timer,但它也应该在某个时刻停止触发。 EJB的TimerService似乎只提供了两种可能性:
我需要的精确度是几小时,所以任何允许每小时重复一次“滚动”天的解决方案都可以。
谢谢。
答案 0 :(得分:0)
您可以使用ScheduleExpression执行此操作:
ScheduleExpression schedule = new ScheduleExpression();
schedule.start(startDate);
schedule.hour("*/2");
schedule.end(endDate);
Timer timer = timerService.createCalendarTimer(schedule);
上述代码每隔2小时触发一次Timer。
答案 1 :(得分:0)
此方法 getTimers()为您提供Bean TimerService当前处于活动状态的计时器列表。对于列表中的每个计时器,执行 getInfo()以获取计时器的信息。如果这是 null ,那么它是您已启动的调度程序。然后执行取消(),它将停止您的计划程序。
List<Timer> timerList = timerService.getTimers();
for(Timer t : timerList){
if(t.getInfo() == null){
t.cancel();
}
}
因此决定从哪里使用它。
答案 2 :(得分:0)
您可以创建两个或更多具有相同功能的计时器。或者创建单个时间计时器,在执行期间计算下一个执行日期/时间并创建下一个单个时间计时器