メッセージ駆動型 Bean について

関連項目

メッセージ駆動型 Bean は、J2EE アプリケーションがメッセージを非同期に処理できるようにするエンタープライズ Bean です。Bean は Java Message Service (JMS) のメッセージリスナーとして機能します。イベントリスナーに似ていますが、メッセージ駆動型 Bean はイベントではなくメッセージを受信します。メッセージは、アプリケーションクライアント、別のエンタープライズ Bean、Web コンポーネントなど、任意の J2EE コンポーネントから送信できます。

メッセージ駆動型 Bean を使用する理由

メッセージ駆動型 Beans は、メッセージが入ってきたときに処理が起動する、非同期のエンタープライズアプリケーションを構築するソリューションです。このアプローチでは、エンタープライズアプリケーションモジュール間で疎結合が可能になります。送信側 (プロデューサ) がメッセージを JMS 管理によるオブジェクト (トピックまたはキュー) に送信し、プロセスを開始します。

セッション Bean およびエンティティー Bean との比較

セッション Beans およびエンティティー Beans とは異なり、メッセージ駆動型 Beans のクライアントは Beans に直接アクセスしません。メッセージ駆動型 Bean には、Bean クラスだけがあります。

いくつかの観点で、メッセージ駆動型 Bean はステートレスセッション Bean に似ています。

メッセージ駆動型 Bean のインスタンスのインスタンス変数は、クライアントメッセージを処理する間、エンタープライズ Bean オブジェクトへのオブジェクト参照など、いくつかの状態情報を維持できます。

メッセージ処理

メッセージを受信すると、コンテナはメッセージ駆動型 Bean の onMessage メソッドを呼び出し、メッセージを処理します。onMessage メソッドは、通常、メッセージを 5 つの JMS メッセージ型のいずれかにキャストし、アプリケーションのビジネスロジックに従ってメッセージを処理します。onMessage メソッドは、ヘルパーメソッドを呼び出したり、セッション Bean またはエンティティー Bean を起動してメッセージの情報を処理し、結果をデータベースに保存することがあります。

メッセージ駆動型 Bean クラスの多くのインスタンスを同時に実行できるため、メッセージのストリームを同時に処理できます。メッセージがこれらのインスタンスに配信される正確な順序は保証されないため、順序に従わないメッセージを処理するように、メッセージ駆動型 Bean を準備する必要があります。たとえば、予約を取り消すメッセージが予約をするメッセージよりも前に配信されることがあります。

トランザクション

コンテナは、メッセージ駆動型 Bean のインスタンスに、コンテナが管理するコンテキストに Bean インスタンスがアクセスできるようにする MessageDrivenContext を提供します。Bean が独自にトランザクションを管理するか、コンテナのトランザクション管理に依存するかに応じて、Bean は MessageDrivenContext の異なるメソッドにアクセスし、トランザクションを処理します。

関連項目
JMS メッセージの送信
エンティティー Bean について
セッション Bean について
エンタープライズ Bean の作成
ビジネスメソッドについて

著作権と商標について