Timer wildfly 10最终:调用计时器超时时出错

Timer wildfly 10最终:调用计时器超时时出错,timer,timeout,wildfly,Timer,Timeout,Wildfly,我有 但如果活动超过10分钟,我会出现以下错误(第一个问题): 2017-03-20 05:20:51097警告[com.arjuna.ats.arjuna](EJB默认)- 1) ARJUNA012077:对已中止的原子操作调用中止 0:ffff0a93a0e9:-c2465a:58cbcab4:37e3 2017-03-20 05:20:51099错误 [org.jboss.as.ejb3.timer](EJB默认值-1)WFLYEJB020:错误 调用计时器超时:[id=e2ecbbbf-

我有

但如果活动超过10分钟,我会出现以下错误(第一个问题):

2017-03-20 05:20:51097警告[com.arjuna.ats.arjuna](EJB默认)- 1) ARJUNA012077:对已中止的原子操作调用中止 0:ffff0a93a0e9:-c2465a:58cbcab4:37e3 2017-03-20 05:20:51099错误 [org.jboss.as.ejb3.timer](EJB默认值-1)WFLYEJB020:错误 调用计时器超时:[id=e2ecbbbf-f339-431d-a031-4f02ea8f67fb timedObjectId=Utopia-ear.Utopia-ejb.TimerMonitoraggioDatabase 自动定时器?:真持续?:假 timerService=org.jboss.as.ejb3.timerService。TimerServiceImpl@188c2824 initialExpiration=null间隔时间(以毫秒为单位)=0 NEXTEXPIRITION=2017年3月21日星期二05:10:00 CET timerState=IN_超时 info=MyTimer]:javax.ejb.EJBTransactionRolledbackException: 事务回滚 位于org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:137) 位于org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:117)


然后再次启动计时器(第二个问题?)

由于@Schedule只是用@Timeout方法打包隐式EJB计时器的一种简单快捷的方法,所以所有其他EJB计时器限制都适用

我不是EJB方面的专家,但当@Schedule方法预期完成时,似乎有一个默认超时-这似乎很短(即仅仅几分钟)。 此外,从经验证据来看,如果达到限时,它会再次尝试触发该方法(因此在第一次终止后进行第二次运行)

我读到你可以直接在JBoss中配置默认超时,但这对我来说是没有选择的-所以我没有使用这个线索()

我所做的是手动设置@Schedule方法的超时。 由于Wildfly 10默认使用EJB3,请确保使用TransactionTimeout注释的EJB3版本

如果尚未隐式,请将以下内容添加到pom.xml中:

@Stateless
public class TimerMonitoraggioDatabase {

    @Schedule(hour="5", minute="10", dayOfWeek="Mon-Fri",
      dayOfMonth="*", month="*", year="*", info="MyTimer", persistent=false)
    private void scheduledTimeout(final Timer t) {

我确实对Wildfly 10有同样的问题

由于@Schedule只是用@Timeout方法打包隐式EJB计时器的一种简单快捷的方法,所以所有其他EJB计时器限制都适用

我不是EJB方面的专家,但当@Schedule方法预期完成时,似乎有一个默认超时-这似乎很短(即仅仅几分钟)。 此外,从经验证据来看,如果达到限时,它会再次尝试触发该方法(因此在第一次终止后进行第二次运行)

我读到你可以直接在JBoss中配置默认超时,但这对我来说是没有选择的-所以我没有使用这个线索()

我所做的是手动设置@Schedule方法的超时。 由于Wildfly 10默认使用EJB3,请确保使用TransactionTimeout注释的EJB3版本

如果尚未隐式,请将以下内容添加到pom.xml中:

@Stateless
public class TimerMonitoraggioDatabase {

    @Schedule(hour="5", minute="10", dayOfWeek="Mon-Fri",
      dayOfMonth="*", month="*", year="*", info="MyTimer", persistent=false)
    private void scheduledTimeout(final Timer t) {

我需要例如@AccessTimeout(值=30,单位=TimeUnit.MINUTES)?无解决方案可供建议?我需要例如@AccessTimeout(值=30,单位=TimeUnit.MINUTES)?无解决方案可供建议?更新答案至更详细的版本。更新答案至更详细的版本。
import org.jboss.ejb3.annotation.TransactionTimeout:

@Schedule(hour="5", minute="10", dayOfWeek="Mon-Fri",
      dayOfMonth="*", month="*", year="*", info="MyTimer", persistent=false)
@TransactionTimeout(value = 23, unit = TimeUnit.HOURS)
private void scheduledTimeout(final Timer t) {