ガイドライン: メッセージ駆動型 Bean の識別
トピック
概論
このガイドラインでは、メッセージ駆動型 Bean の識別を中心に説明します。メッセージ駆動型 Bean の補足ガイダンスは、『ガイドライン: メッセージ駆動型 Bean』で提供されます。EJB に関する一般的なガイダンスは、『ガイドライン:
Enterprise JavaBeans (EJB)』で提供します。
メッセージ駆動型 Bean の特性は次のとおりです。
- ステートレスです。
- クライアントに値や例外を返しません。
- インターフェースを持ちません。その理由は、クライアントはメッセージ駆動型 Bean に直接アクセスせず、Bean からサービスを提供される宛先 (エンドポイント ) にメッセージを送信することによって間接的にアクセスするからです。任意のメッセージを汎用的に処理する 1 つのリスナー・メソッド (JMS メッセージ駆動型 Bean の場合は「onMessage()」) が存在します。
これは、実行時にタイプ・チェックを実行する必要があることを意味します。「instanceOf()」操作を使用して、受け取ったメッセージのタイプを判別します。
メッセージは、ほかの EJB、Web コンポーネント、アプリケーション・クライアントなど、任意の場所からコンテナーに送信できます。コンテナーは、必要に応じてメッセージ駆動型 EJB を呼び出し、受信するメッセージ・イベントを処理します。メッセージ駆動型 EJB は、ほかのセッションや エンティティー EJB にアクセスしたり、メッセージを処理する EIS 層に直接アクセスしたりできます。
メッセージ駆動型 Bean の識別
メッセージ駆動型 Bean では、メッセージを非同期に処理する方法を提供します。セッション Bean とエンティティー Bean では、同期呼び出しのみが可能です。メッセージ駆動型 Bean は、システム全体の並行性の定義の一部として識別されます。呼び出し元と呼び出し先のコードを切り離すための設計パターンなど、並行性に関する一般的なガイドラインについては、『ガイドライン: 並行性』を参照してください。メッセージ駆動型 Bean は一般に、EJB コンテナー内で並行性を提供する手段としての『作業: 実行時アーキテクチャーの記述』の一部として識別されます。
そのため、一般に分析クラスから直接識別されませんが、性能と結合性の問題など、特定の設計上の問題を解決するために識別されます。
メッセージ駆動型 Bean を導入する理由として、以下のことが挙げられます。
- ソフトウェアのさまざまな領域間の問題を分離します。メッセージのコンシューマーと結合せずに、メッセージをキューに送信できます。また、送信側と受信側を複数サポートできます。
- メッセージの送信側が同期呼び出し時にブロックされる (エンティティー Bean やセッション Bean の呼び出しで発生) ことがなく処理を実行できるので性能が向上します。
- メッセージ・コンシューマーがオフラインの場合でもメッセージの送信側が機能し続けることによって、信頼性が向上します。
- 保証付きメッセージ配信など、ほかの利点が、メッセージング・インターフェースの背後にあるメッセージ指向ミドルウェア (MOM) によって提供されます。
- メッセージングを使用して通信する既存の設計要素 (レガシー・システムなど) が存在します。
メッセージ駆動型 Bean のモデリング
EJB のモデリングについて一般的なガイダンスは、『ガイドライン: Enterprise JavaBeans (EJB) の識別』を参照してください。一方、メッセージ駆動型 Bean は一般にプロセス・ビューの一部としてモデリングされることに注意してください。メッセージ駆動型 Bean のプロセス・ビューでのモデリングについての固有のガイダンスは、『ガイドライン: J2EE アプリケーションの実行時アーキテクチャーの記述』を参照してください。
メッセージ送信側への結果の返信
メッセージ駆動型 Bean は、メッセージ送信側への応答を直接送信できません。
応答を送信する一般的な方法は、応答用に別の宛先またはエンドポイントを導入することです。この方法について詳しくは、参考資料 ROM02 を参照してください。
|