下面是我在@Stateless
bean中的计时器服务。
@Resource
private TimerService timerService;
我正在创造一个定时器
int timeout = 10;
Timer timer = timerService.createTimer(timeout * 1000, timerId);
我的超时
@Timeout
public void handleTimeout(Timer timer){
// This method process a task that requires
// 60-80 minutes on an average
}
但奇怪的是,我的handleTimeout()
在5-6分钟后重新启动。再过5-6分钟,它就会得到一个Exception
并停止处理。
我只想通过@Timeout
运行该方法一个小时。我在这里错过了什么?
显然,我可以使用Quartz或异步任务调度程序来克服这一点。但想知道我的代码是怎么回事。
发布于 2014-01-28 07:19:25
我又一次解决了我的问题。在我的Jboss7.1
standalone.xml
文件中,下面的内容使我的进程在5分钟后超时。
<coordinator-environment default-timeout="300"/>
我增加了这个值,以扩展整个过程,而且它起了作用。例如,3000秒,50分钟。
对于我的Jboss EAP 6.2
,我不需要更改这个配置。只是在方法上添加这个注释对我来说是有效的。备注:这在Jboss7.1
不起作用
// import javax.ejb.TransactionAttribute;
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
希望有一天我的回答会对某人有所帮助:)
https://stackoverflow.com/questions/21361395
复制相似问题