2011-09-05 31 views
0

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

例子:

​​943

现在,我愿做这样的事情:

timerService.runNow(timer); 

不幸的是没有runNow方法。

+0

你不能用当前时间创建一个新的定时器,所以它会立即超时并可以取消前一个。 –

回答

0

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

说你可以实现你的超时方法是这样的:

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

然后,你需要点击相应的按钮时,只需拨打logic.doMyTimeout();以及做什么。

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

+1

我认为这可能是一个有效的原因。在我开发的应用程序中,我们实现了完全相同的功能,但使用了Quartz。这个用例就是你想动态地发现哪些定时器(Quartz中的触发器),并且运行这些定时器 - 完全如此 - 它们如何配置为运行。 –

+0

这是一个有效的例子,但是EJB'Timers'似乎无法处理这个问题,所以必须像你所做的那样建立一个解决方法或者使用像'Quartz'这样的其他东西。 –

+0

事实上,不幸的是EJB定时器不能被查询。信息在容器中,但你需要黑客和反射技巧才能到达它,这当然不被推荐。 –