Java 2 Platform、Enterprise Edition (J2EE プラットフォーム) は、多層アプリケーションとシンクライアントエンタープライズアプリケーションをホストする、標準サーバープラットフォームの仕様です。J2EE プラットフォームの要件の 1 つは、分散コンポーネントが、信頼性の高い非同期メッセージングにより対話できるようにすることです。この対話動作は、JMS プロバイダを使用することによって可能になります。事実上、Message Queue は J2EE プラットフォームの基準 JMS 実装製品です。
この章では、J2EE プラットフォーム環境で実装される派生 JMS について説明します。章には次のトピックが含まれます。
Message Queue を J2EE 準拠アプリケーションサーバー用の JMS プロバイダとして使用する方法については、『Sun Java System Message Queue 3.7 UR1 管理ガイド』の第 17 章「JMS Resource Adapter Property Reference」を参照してください。
第 2 章「クライアントプログラミングモデル」で説明した一般的な JMS クライアントプログラミングモデルのほかに、さらに JMS クライアントに特化したプログラミングモデルがあり、J2EE プラットフォームアプリケーションのコンテキストで使用されます。この特殊なクライアントは、メッセージ駆動型 Beans と呼ばれ、EJB 2.0 以降の仕様 (http://java.sun.com/products/ejb/docs.html) で指定されている Enterprise JavaBeans (EJB) コンポーネント のシリーズの 1 つです。
メッセージ駆動型 Beans は非同期メッセージングを行います。その他の EJB コンポーネント (セッション Beans とエンティティー Beans) は、標準的な EJB インタフェースを通じて同時に呼び出す必要があります。ただし、多くのエンタープライズアプリケーションは、サーバーサイドコンポーネントがサーバーリソースを結びつけずに相互に通信するために、非同期メッセージングを必要とします。サーバーサイドコンポーネントがアプリケーションイベントに応答する必要のあるアプリケーションでは、メッセージのプロデューサにしっかり結合していなくても、メッセージを受信してコンシュームできる EJB コンポーネントが必要になります。エンタープライズアプリケーションでは、負荷が増加する場合、この機能を拡張する必要があります。
メッセージ駆動型 Beans (MDB) は、サポートするコンポーネントに分散サービスを提供する特殊な EJB コンテナによってサポートされる EJB コンポーネントです。
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 インスタンスのプールを管理します。
メッセージコンシュームを設定するときにコンテナによって使用されるコネクションファクトリと送信先の属性を指定する配置記述子は、MDB に関連付けられています。また、配置記述子には、コンテナを設定するために配置ツールによって必要とされるほかの情報も含まれます。各コンテナでは、1 つの MDB のインスタンスをサポートします。
J2EE アーキテクチャーでは、EJB コンテナが J2EE アプリケーションサーバーにホストされます。アプリケーションサーバーは、さまざまなコンテナで必要とされるリソースを提供します。たとえば、トランザクションマネージャー、持続マネージャー、ネームサービス、およびメッセージングや MDB の場合には JMS プロバイダなどです。
Sun Java System Application Server では、Sun Java System Message Queue によって JMS メッセージングのリソースが提供されます。
Sun Java System Application Server 7.0 の場合、Message Queue メッセージングシステムはネイティブな JMS プロバイダとしてアプリケーションサーバーに統合されます。
Sun J2EE 1.4 アプリケーションサーバーの場合、Message Queue は埋め込みの JMS リソースアダプタとしてアプリケーションサーバーにプラグインされます。
アプリケーションサーバーの将来リリースでは、Message Queue はリソースアダプタの標準的な配備方法と設定方法を使用してアプリケーションサーバーにプラグインされる予定です。
J2EE アーキテクチャーの詳細は、http://java.sun.com/j2ee/download.html#platformspec にある「J2EE Platform Specification」を参照してください。
リソースアダプタは、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) です (『Sun Java System Message Queue 3.7 UR1 管理ガイド』の第 17 章「JMS Resource Adapter Property Reference」を参照)。imqjmsra.rar ファイルには、リソースアダプタの配備記述子 (ra.xml) とともに、アダプタを使用するためにアプリケーションサーバーで必要とされる JAR ファイルが記述されています。
アプリケーションサーバーに添付の説明書に従って Message Queue リソースアダプタを配置し設定すれば、J2EE 1.4 準拠のアプリケーションサーバーで リソースアダプタを使用できます。商用の J2EE 1.4 アプリケーションサーバーが市販されるようになり、Message Queue リソースアダプタもそれらのアプリケーションサーバー用として承認されるようになれば、Message Queue のマニュアルには関連する配備手順と設定手順についての情報が掲載されるようになります。