在我正在处理的项目中,我需要显示与 bean 关联的计时器列表并显示有关它们的信息。需要的选项之一是触发与列表中特定 Timer 关联的事件。我还没有找到一种方法来获得计时器的回调,所以任何帮助都将不胜感激。
现在定时器是通过这样的注释创建的:
@Schedule(second = "0", minute = "0", hour = "*")
public void someMethod()
{
//Some code here
}
获取计时器所有信息的方法是这样的:
public ArrayList<SchedulerInfoModel> getTimers()
{
ArrayList<SchedulerInfoModel> timerInfo = new ArrayList<SchedulerInfoModel>();
Collection<Timer> timers = timerService.getTimers();
for (Iterator<Timer> it = timers.iterator(); it.hasNext();)
{
Timer timer = it.next();
timerInfo.add(new SchedulerInfoModel(timer.getInfo().toString(), timer.getNextTimeout().toString(), timer.getSchedule().toString()));
}
return timerInfo;
}
其中 SchedulerInfoModel 是一个简单的 POJO:
public class SchedulerInfoModel
{
private String info;
private String timeout;
private String schedule;
//getter/setters omitted for brevity
}
那么问题来了,有没有办法获得 Timer 的回调?或者如果这是不可能的,有什么方法可以“强制”触发 Timer 而不会影响未来的超时?