0

在我正在处理的项目中,我需要显示与 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 而不会影响未来的超时?

4

1 回答 1

0

您是否尝试获取与 Timer 关联的 Method 对象?不,没有标准的方法可以做到这一点。我的建议是在 info 对象中嵌入一些信息。

也没有办法强制计时器触发。最接近的就是让超时回调方法也成为业务方法,然后直接调用该方法。

于 2013-04-26T16:48:11.953 回答