2016-07-07 38 views
1

禁用EJB定时器超时重试我在EJB 3.0创建了一个定时器, weblogic 10.3, 当超时方法的过程中发生了异常,再次执行该方法多次,除发生所有的时间。我如何禁用此功能?如何在异常

+0

我觉得这个环节解决您的问题[http://stackoverflow.com/questions/2112190/how-to-stop-endless-ejb-3-timer](http://stackoverflow.com/questions/2112190/how-to-stop-endless-ejb-3-timer) –

+0

@AlexanderPetrov它不是同一个问题,那个问题中的问题是由于持久性问题导致的,因为在异常之后重试。 – Leo

回答

1

当前事务标记为回滚每当一个RuntimeException通过EJB调用传播回。

EJB计时器是事务性的,因此任何的RuntimeException从计时器方法或计时器方法本身将导致回退EJB调用抛出。

因此,为了防止计时器机器重试计时器,必须通过在从任何EJB调用或计时器方法本身抛出所述RuntimeExceptions之前阻止计时器方法在调用链中的任何回滚。在消息驱动bean FWIW存在

同样的问题。

+0

或者,从Timer调用的EJB方法可能被标记为与事务('@ RequiresNew')隔离,或者仅引发由Timer调用的EJB方法检查到的异常。由定时器调用的EJB抛出的检查异常被容器忽略。 – dan