EJB @Schedule超时方法调用

时间:2016-03-18 23:58:36

标签: java jboss ejb ejb-3.1

我正在使用EJB @Schedule

@Schedule(hour:"18")
someProcess(){

//this code takes 10 minutes
}

这是失败的,因为我的鳕鱼需要> 3分钟,这是我的Jboss中的默认时间。无论如何我可以通过编程方式处理这个问题吗?我不想更改会产生更大影响的standalone.xml。无论如何,我可以告诉JBOSS / JVM只要它需要而不是超时运行它。

2 个答案:

答案 0 :(得分:0)

将您的代码更改为:

@TransactionAttribute(NOT_SUPPORTED)
@Schedule(hour:"18")
void someProcess(){

      //this code takes 10 minutes

}

以防止发生事务超时。

答案 1 :(得分:0)

如果您需要交易作业,请从TransactionTimeout包中试用org.jboss.ejb3.annotation.TransactionTimeout注释。

@TransactionTimeout(unit = TimeUnit.MINUTES, value = 10)
@Schedule(year = "*", minute = "0", hour = "18", dayOfMonth = "*")
public void performHeavyJob(){
    // hmmm...Heavy Code.
}

否则您可以选择@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)