2011-12-08 16 views
2

技術:のWeblogic /メッセージ駆動型Bean処理問題

Jave EEは、WebLogic 10.3、JMS

シナリオ:

EJBモジュール、駆動型Bean 3明確なメッセージで、Module_1に言います(MDB)クラスは、3つの異なるJava Mssageキュー(JMS)を監視します。メッセージは常にこれらのBeanに追加されます。

問題:

毎日一度、特定の時間に、私は、任意のメッセージを失うことなく、全体のWebLogic Serverを再起動する必要があります。また、このサーバーにはModule_2という別のモジュールが配備されています。そして、Module_1の前にModule_2が開始されていることを確認する必要があります。

任意のメッセージがMDBによって所定のシャットダウン時に処理されている場合は、処理が完了するまで待つ必要があります。それは確かではありません。

誰かがそれを達成するための標準的なアプローチ/構成を提案できますか?

また、Weblogic Serverを何の注意も払って直接再起動したらどうなりますか?それはキューに入っているメッセージや処理中のメッセージにどのように影響しますか?

ありがとうございました。

答えて

1

モジュールの起動順序はconfigパラメータです。config.xmlの<deployment-order>10200</deployment-order>をチェックしてください。低い番号のモジュールは、高い番号のモジュールの前に配備されます。

シャットダウンに関しては、「グレースフルシャットダウン」(http://docs.oracle.com/cd/E13222_01/wls/docs81/adminguide/overview_lifecycle.html#1045901)を実行することをお勧めします。これにより、キューは新しいメッセージを受け入れなくなり、すべてのメッセージが保持されていることを確認し、飛行中のメッセージが処理されるまで待つ必要があります。それだけでそれは止まるでしょう。

ハードエラーが発生した後に再起動した場合、機内メッセージは正常に完了しなかったため、再処理されます。通常、これは予想される動作です。

関連する問題