0
在我正在处理的项目中,我需要显示与bean关联的定时器列表并显示关于它们的信息。需要的选项之一是激发与列表中特定定时器关联的事件。我还没有找到一种方法来获得一个计时器的回调,所以任何帮助将不胜感激。获取javax.ejb.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
}
所以问题是,有没有办法得到一个计时器的回调?或者,如果这是不可能的,是否有任何方式可以“强制”计时器被触发而不影响未来的超时?
感谢您的回答,这就是我在此期间所做的。我将该方法的名称包含在信息中,然后在需要时将其恢复,并使用反射来激发该方法。这感觉就像一个黑客,因此,这个问题。不管怎么说,还是要谢谢你! – Zeratul2k 2013-04-26 20:25:29
是的,那正是我所建议的。很高兴它的工作。 – 2013-04-26 20:28:01