2016-07-07 28 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