WebSphere Application Server は非同期メッセージ・コンシューマーとしてメッセージ駆動型 Bean の使用をサポートします。
メッセージ駆動型 Bean によるメッセージングは、 この図メッセージ駆動型 Bean によるメッセージングに示すとおりです。
クライアントは、メッセージ駆動型 Bean がメッセージ・リスナーとしてデプロイされている宛先 (またはエンドポイント) にメッセージを送信します。 メッセージが宛先に到着すると、 EJB コンテナーによってメッセージ駆動型 Bean が自動的に呼び出されます。 この際に、アプリケーションは宛先を明示的にポーリングする必要はありません。 メッセージ駆動型 Bean は、宛先で着信メッセージを処理するために、 いくつかのビジネス・ロジックを実装します。
メッセージ駆動型 Bean は、Java Connector Architecture (JCA) 1.5 リソース・アダプター上で、 またはリスナー・ポートに対して (WebSphere Application Server バージョン 5 と同様に)、 リスナーとして構成することができます。 メッセージ駆動型 Bean は、JCA 1.5 リソース・アダプターを使用して、JMS メッセージだけでなく汎用メッセージ・タイプも処理できます。 これにより、メッセージ駆動型 Bean は、リソース・アダプターを介してエンタープライズ情報システムから WebSphere Application Server に送られる汎用要求の処理に適したものになります。JCA 1.5 仕様では、 そのようなメッセージ駆動型 Bean は、 一般にメッセージ・エンドポイント または単にエンドポイント と呼ばれます。
すべてのメッセージ駆動型 Bean は、 MessageDrivenBean インターフェースをインプリメントする必要があります。 JMS メッセージングでは、メッセージ駆動型 Bean はメッセージ・リスナー・インターフェース、javax.jms.MessageListener もインプリメントする必要があります。
メッセージ駆動型 Bean は、メッセージ・リスナー・インターフェ ースに加えて javax.ejb.TimedObject インターフェースをインプリメントす る場合、時間ベースのイベント通知の EJB タイマー・サービスに登録することができます。
別のエンタープライズ Bean への着信メッセージのビジネス処理を代行するために、 メッセージ駆動型 Bean を開発し、メッセージ処理とビジネス処理を明確に分けることをお勧めします。 さらに、ビジネス・プロセスを、着信メッセージの到着により呼び出したり、 あるいは WebSphere J2EE クライアントなどから呼び出したりすることができるようになります。
メッセージ駆動型 Bean が処理中の宛先に到着するメッセージは、クライアント信任状に関連付けられていません。 つまり、メッセージは匿名です。 セキュリティーは、メッセージ駆動型 Bean の RunAs ID が EJB コンポーネントとして指定する役割によって決まります。 EJB セキュリティーについて詳しくは、エンタープライズ Bean アプリケーションの保護 を参照してください。
JMS メッセージングの場合、メッセージ駆動型 Bean は、 JCA 1.5 リソース・アダプターを持つ JMS プロバイダー (例えば、WebSphere Application Server バージョン 6 の一部である、 デフォルトのメッセージング・プロバイダーなど) を使用できます。 JCA 1.5 リソース・アダプターを使用して、EJB 2.1 メッセージ 駆動型 Bean を JCA 1.5 準拠リソースとしてデプロイし、 J2C アクティベーション・スペックを使用します。 JMS プロバイダーが、JCA 1.5 リソース・ アダプター (例えば、V5 デフォルト・メッセージング や WebSphere MQ など) を持たない場合、 (WebSphere Application Server バージョン 5 と同様に) リスナー・ポートに 対して JMS メッセージ駆動型 Bean を構成する必要があります。