サード・パーティ・アプリケーション・サーバーにおいては、JMSの2つの主要なユースケースがあります。ユース・ケースの1つに、ユーザーがJMSプロバイダと同期して対話するアウトバウンド通信が含まれます。その他のユースケースには、ユーザーがJMSプロバイダと非同期に対話するインバウンド通信(たとえば、メッセージドリブンBean (MDB)を介した)が含まれます。
JMSリソース・アダプタは、Java Connector Architecture仕様に従って、WebLogic JMSを使用したアプリケーションに対するアウトバウンドXA機能を提供します。JMSリソース・アダプタの管理対象接続は、WebLogic JMSクライアント接続および、WebLogic Serverクラスタ・メンバーを指すセッションを保持します。管理対象接続は、同じWebLogic Serverクラスタ・メンバーを指す介在トランザクション・マネージャ(ITM)スタブも参照します。WebLogic ITMは、別のWebLogic Serverインスタンスで発生するJMS操作を処理できますが、JMS操作およびITMを同じインスタンスの同じクラスタ・メンバーに配置するほうがより効率的です(ITMアフィニティ)。
JMSリソース・アダプタの管理対象接続がグローバル・トランザクションに含まれている場合、次に注意してください。
Oracle GlassFishサーバー・インスタンスは、管理対象接続上でgetXAResource
メソッドを呼び出して、その操作をグローバル・トランザクションに登録します(リソース・アダプタとアプリケーション・サーバー間のJava Connector Architectureトランザクション規約による)。
クラスタ全体のリカバリが有効な場合、ITYMは任意のXAコールを透過的に処理して、ITMアフィニティを維持するために適切なクラスタ・メンバー・インスタンスに転送します。
詳細は、配布されたトランザクションのクラスタ全体のトランザクション・リカバリを、クラスタのすべてのITMにわたって構成できます。Oracle WebLogic Server JTAアプリケーションの開発のクラスタ全体のリカバリを参照してください。
管理対象接続は対応するITMを指すXAResource
ラッパーを戻します。
このラッパーによって、ITMのXAResource
ラッパーにXAのコールが引き継がれます。
インバウンドのユースケースでは、リソース・アダプタのインバウンド通信規約またはネイティブMDBコードのいずれかを実装することによって、メッセージが受信されます。次の点に注意してください。
リソース・アダプタの規約が使用される場合、リソース・アダプタはMDB宛先(WebLogic Server宛先)からメッセージを受信し、それらをMDBに配布します。多くの場合、リソース・アダプタは、メッセージを同時に受信するために、複数のワーカー・スレッドを生成します。各スレッドは、個別のエンドポイントと個別のWebLogic JMSセッションを使用します。メッセージ受信の操作をグローバル・トランザクションに登録する外部アプリケーション・サーバーの場合、JMSリソース・アダプタは、XAResource
ラッパーを渡すMessageEndpointFactory
createEndpoint(XAResource)
メソッドを使用して、エンドポイントを作成します。このラッパーには、メッセージを受信しているWebLogic JMSセッションと同じWebLogic Serverインスタンスを指すITMスタブが含まれています。WebLogic宛先が分散宛先の場合、ワーカー・スレッドは宛先メンバー全体に均等に分散されます。
ネイティブMBDが使用されている場合、アプリケーション・サーバーがメッセージを受信します。JMSリソース・アダプタを使用する場合の使用シナリオはアウトバウンドの使用の場合と同じです。トランザクション管理についても同じです。
一般に、アプリケーション・コンポーネントがトランザクションのコンテキストにおいて接続ハンドルをリクエストするとき、接続は自動的にトランザクションに登録されます。これは、接続がまったく使用されずに不必要なオーバーヘッドを招く場合でも発生します。
遅延登録では、新しい接続は、それがトランザクションで実際に使用される場合にのみ(つまり、データがその接続を介して送信される場合にのみ)、トランザクションに登録されます。
アプリケーション環境で使用するには、JMSリソース・アダプタと外部アプリケーション・サーバーの両方が、この機能を使用できるように遅延登録をサポートする必要があります。
WebLogic Server管理コンソールの「クラスタ: 構成: JTA」ページで「クラスタ全体の回復の有効化」を選択することで、クラスタのすべてのITMにわたる分散トランザクションについてクラスタ全体のトランザクション回復を構成できます。
クラスタ全体のリカバリが有効な場合、WebLogic Serverクラスタ内の各ITMは、クラスタ全体にわたるトランザクションの分散を認識します。これにより、各クラスタ・メンバー上のITMでは特定のXA呼出しを処理する必要があるか、または別のクラスタ・メンバーの適切なITMに転送する必要があるかが判断されます。
WebLogic Serverのトランザクション処理の詳細は、障害の管理の理解およびOracle WebLogic Server JTAアプリケーションの開発のサード・パーティ・トランザクション・マネージャで管理されるトランザクションへの参加を参照してください。