javax.ejb.Timer会在短时间后重新启动

时间:2014-01-26 08:37:16

标签: java timer jboss

这是我在@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或Async Task调度程序来解决这个问题。但是想知道我的代码在这里发生了什么。

1 个答案:

答案 0 :(得分:0)

好吧,我再一次解决了我的问题。在我的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)

希望有一天我的回答会对某人有所帮助: - )