2016-07-07 12 views
1

weblogic 10.3、 をEJBタイマーのタイムアウトの再試行を無効にすると、例外がタイムアウトメソッドの間に発生した場合に、この方法は、すべての時間が起き除いて、再び複数回実行されます。どうすればこの機能を無効にできますか?はどのように、私は<code>EJB 3.0</code>でタイマーを作成した例外

+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それは同じ問題ではない、その問題の1つは永続性によるもので、1つのImは例外の後で再試行のためです。 – Leo

答えて

1

現在のトランザクションは、RuntimeExceptionがEJBコールを介して伝搬されるたびにロールバックのマークが付けられます。

EJBタイマーはトランザクショナルなので、タイマーメソッドまたはタイマーメソッド自体からEJBコールからスローされたRuntimeExceptionは、ロールバックを引き起こします。

したがって、タイマー機構がタイマーを再試行しないようにするには、RuntimeExceptionsをキャッチしてEJBメソッドまたはタイマーメソッド自体からスローされる前に、タイマーメソッドからのコールチェーンのロールバックを防ぐ必要があります。

メッセージ駆動型Bean FWIWにも同じ問題が存在します。

+0

また、Timerから呼び出されたEJBメソッドは、トランザクションから隔離されたもの( '@ RequiresNew')としてマークされるか、Timerによって呼び出されるEJBメソッドからチェック例外のみをスローすることができます。タイマーによって呼び出されたEJBによってスローされたチェック例外は、コンテナによって無視されます。 – dan

関連する問題