Sun Java System Message Queue 3 2005Q4 技術の概要 |
第 5 章
Message Queue と J2EEJava 2 Platform、Enterprise Edition (J2EE プラットフォーム) は、多層アプリケーションとシンクライアントエンタープライズアプリケーションをホストする、標準サーバープラットフォームの仕様です。J2EE プラットフォームの要件の 1 つは、分散コンポーネントが、信頼性の高い非同期メッセージングにより対話できるようにすることです。この対話動作は、JMS プロバイダを使用することによって可能になります。事実上、Message Queue は J2EE プラットフォームの基準 JMS 実装製品です。
この章では、J2EE プラットフォーム環境で実装される派生 JMS について説明します。章には次のトピックが含まれます。
Message Queue を J2EE 準拠アプリケーションサーバー用の JMS プロバイダとして使用する方法については、『Message Queue 管理ガイド』を参照してください。
JMS/J2EE プログラミング: メッセージ駆動型 Beans第 2 章で説明した一般的な JMS クライアントプログラミングモデルのほかに、さらに JMS クライアントに特化したプログラミングモデルがあり、J2EE プラットフォームアプリケーションのコンテキストで使用されます。この特殊なクライアントは、メッセージ駆動型 Beans と呼ばれ、EJB 2.0 以降の仕様 (http://java.sun.com/products/ejb/docs.html) で指定されている Enterprise JavaBeans (EJB) コンポーネントのシリーズの 1 つです。
その他の EJB コンポーネント (セッション Beans とエンティティー Beans) は同時に呼び出す必要があるため、メッセージ駆動型 Beans が必要となります。ただし、多くのエンタープライズアプリケーションは非同期メッセージングを必要とします。これらのアプリケーションの多くは、サーバーサイドコンポーネントがサーバーリソースを結びつけずに、相互に通信できることが要件となっています。このため、メッセージのプロデューサにしっかり結合していなくても、メッセージを受信してコンシュームできる EJB コンポーネントが必要になります。この機能は、サーバーサイドコンポーネントがアプリケーションイベントに応答する必要のある、すべてのアプリケーションで必要となります。エンタープライズアプリケーションでは、負荷が増加する場合、この機能を拡張する必要があります。
メッセージ駆動型 Beans (MDB) は、サポートするコンポーネントに分散サービスを提供する特殊な EJB コンテナによってサポートされる EJB コンポーネントです。
図 5-1 MDB を使用したメッセージング
- JMS メッセージ駆動型 Beans は、JMS MessageListener インタフェースを実装する EJB です。MDB 開発者がプログラミングした onMessage メソッドは、MDB コンテナがメッセージを受信したときに呼び出されます。onMessage() メソッドは、標準的な MessageListener オブジェクトの onMessage() メソッドがコンシュームするのと同じように、メッセージをコンシュームします。ほかの EJB コンポーネントの場合とは異なり、メソッドを MDB でリモートに呼び出さないため、これと関連付けられているホームまたはリモートのインタフェースはありません。MDB は単一の送信先からのメッセージをコンシュームできます。図 5-1 にあるように、スタンドアロン JMS アプリケーション、JMS コンポーネント、EJB コンポーネント、および Web コンポーネントにより、メッセージをプロデュースできます。
- 特殊な EJB コンテナが MDB をサポートします。このコンテナは、MDB のインスタンスを作成し、メッセージの非同期コンシュームを行うようにインスタンスを設定します。コンテナは、メッセージサービスを使用したコネクションの設定 (認証を含む)、特定の送信先に関するセッションのプールの作成、プールされたセッション間のメッセージ分散の管理を行います。コンテナは MDB インスタンスのライフサイクルを制御するため、受信メッセージの読み込みに対応できるように、MDB インスタンスのプールを管理します。
J2EE アプリケーションサーバーのサポートJ2EE アーキテクチャーでは、EJB コンテナが J2EE アプリケーションサーバーにホストされます。アプリケーションサーバーは、トランザクションマネージャー、持続マネージャー、ネームサービス、およびメッセージングや MDB の場合には JMS プロバイダなど、さまざまなコンテナで必要とされるリソースを提供します。
Sun Java System Application Server では、Sun Java System Message Queue によって JMS メッセージングのリソースが提供されます。
アプリケーションサーバーの将来リリースでは、Message Queue はリソースアダプタの標準的な配備方法と設定方法を使用してアプリケーションサーバーにプラグインされる予定です。
J2EE アーキテクチャーの詳細は、http://java.sun.com/j2ee/download.html#platformspec にある「J2EE Platform Specification」を参照してください。
JMS リソースアダプタ
リソースアダプタは、J2EE 1.4 に準拠するアプリケーションサーバーに追加機能をプラグインする際の標準的な方法です。J2EE Connector Architecture (J2EECA) 1.5 仕様によって定義されている標準を使用して、アプリケーションサーバーは標準的な手法で外部システムとやり取りできます。これらの外部システムには、企業情報システム (EIS)、および JMS プロバイダなどのメッセージングシステムが含まれます。Message Queue には、アプリケーションサーバーで Message Queue を JMS プロバイダとして使用できるようにする JMS リソースアダプタが組み込まれています。
JMS リソースアダプタをアプリケーションサーバーへ接続することにより、アプリケーションサーバーに配備されて稼働している J2EE コンポーネントで、JMS メッセージを交換することができます。これらのコンポーネントに必要となる JMS コネクションファクトリと送信先管理対象オブジェクトは、J2EE アプリケーションサーバー管理ツールを使用して作成し設定されます。
ただし、ブローカと物理的な送信先の管理など、そのほかの管理操作は J2EECA 仕様には含まれていません。プロバイダ固有のツールを使用しなければ実行できません。
Message Queue リソースアダプタは、Sun J2EE 1.4 アプリケーションサーバーに組み込まれています。ただし、ほかの J2EE 1.4 アプリケーションサーバーではまだ承認されていません。
Message Queue リソースアダプタは、オペレーティングシステムに依存するディレクトリに格納された単一ファイル (imqjmsra.rar) です (『Message Queue 管理ガイド』を参照)。imqjmsra.rar ファイルには、リソースアダプタの配備ディスクリプタ (ra.xml) とともに、アダプタを使用するためにアプリケーションサーバーで必要とされる JAR ファイルが記述されています。
アプリケーションサーバーに添付の説明書に従ってリソースアダプタを配置し設定すれば、J2EE 1.4 準拠のアプリケーションサーバーで Message Queue リソースアダプタを使用できます。商用の J2EE 1.4 アプリケーションサーバーが市販されるようになり、Message Queue リソースアダプタもそれらのアプリケーションサーバー用として承認されるようになれば、Message Queue のマニュアルには関連する配備手順と設定手順についての情報が掲載されるようになります。