现在执行Java EE 6计时器

时间:2011-09-05 18:25:01

标签: java timer scheduled-tasks java-ee-6 ejb-3.1

我有一个Java EE 6计时器 - 我使用ScheduleExpression计划,但我也希望能够“现在”运行它,例如按钮单击。我怎样才能做到这一点?

我如何创建计时器的示例:

ScheduleExpression schedExp = new ScheduleExpression();
    schedExp.start(jobInfo.getStartDate());
    schedExp.end(jobInfo.getEndDate());
    schedExp.second(jobInfo.getSecond());
    schedExp.minute(jobInfo.getMinute());
    schedExp.hour(jobInfo.getHour());
    schedExp.dayOfMonth(jobInfo.getDayOfMonth());
    schedExp.month(jobInfo.getMonth());
    schedExp.year(jobInfo.getYear());
    schedExp.dayOfWeek(jobInfo.getDayOfWeek());

TimerConfig timerConf = new TimerConfig(jobInfo, false);
Timer newTimer = timerService.createCalendarTimer(schedExp, timerConf);

现在我想做这样的事情:

timerService.runNow(timer);

不幸的是没有runNow方法。

1 个答案:

答案 0 :(得分:0)

我不认为这是可能的,但我怀疑如果你正确地做其余的事情就需要它。

假设您可以像这样实现Timeout方法:

@Timeout
public void doTimeout(Timer timer) {
    logic.doMyTimeout();
}

然后单击相应按钮时需要执行的操作也只是调用logic.doMyTimeout();

有没有理由不使用这种方法?