计时器是使用TimerService.createTimer()
在EJB3中创建的,然后通过@Timeout
注释所注释的任何回调方法运行,即:
@Resource
private TimerService timerService;
public void createHampster() {
Hampster hampster = new Hampster("Fluffy III");
timerService.createTimer(3000, 3000, hampster);
}
(...)
@Timeout
public void feedHampster(Timer timer) {
Hampster hampster = (Hampster) timer.getInfo()
//(...)
}
所以,我的问题是,这两个代码块是否需要在同一个bean中?计时器是继承到创建它们的bean还是全局的?我自己的测试表明,但以前是这样,我在文档中还没有找到确定的内容。
最佳答案
它们与创建它们的bean绑定在一起。 EJB 3规范第18.2节说:
企业bean的bean类
使用计时器服务的必须
提供超时回调方法。
和
当计时器指定的时间
创建已过去,容器
调用的超时回调方法
豆。