プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JMSリソース・アダプタの管理
12c (12.2.1)
E70024-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

9 トランザクション処理の理解

この章では、外部アプリケーション・サーバーとWebLogic Serverの間で相互運用するためにJMS RAを使用する場合のトランザクション処理およびリカバリについて説明します。

この章には次の項が含まれます:

JMS RAのトランザクション・サポート

サード・パーティ・アプリケーション・サーバーにおいては、JMSの2つの主要なユースケースがあります。1つは、ユーザーがJMSプロバイダと同期して対話するアウトバウンド通信です。2つ目は、ユーザーがJMSプロバイダと非同期に対話するインバウンド通信です(たとえば、メッセージドリブンBean (MDB)を介した)。

アウトバウンド通信のトランザクション・サポート

JMS RAは、JCA標準に従って、WebLogic JMSを使用したアプリケーションに対するアウトバウンドXA機能を提供します。詳細は、「transaction-support」を参照してください。

JMS RAの管理対象接続は、WebLogic JMSクライアント接続および、WebLogicクラスタ・メンバーを指すセッションを保持します。管理対象接続は、同じWebLogicクラスタ・メンバーを指す介在トランザクション・マネージャ(ITM)スタブも参照します。WebLogic ITMは、別のWebLogicインスタンスで発生するJMS操作を処理できますが、JMS操作およびITMを同じインスタンスの同じクラスタ・メンバーに配置するほうがより効率的です(ITMアフィニティ)。JMS RAの管理対象接続がグローバル・トランザクションに含まれている場合:

  • GlassFishサーバー・インスタンスは、管理対象接続上でgetXAResource()メソッドをコールして、その操作をグローバル・トランザクションに登録します(リソース・アダプタとアプリケーション・サーバー間のJCA トランザクション規約による)。

  • Cluster-wide Recoveryが有効な場合、介在トランザクション・マネージャは任意のXAコールを透過的に処理して、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 RAと外部アプリケーション・サーバーの両方が、この機能を使用できるように遅延登録をサポートする必要があります。

WebLogicのクラスタ全体のリカバリ

Oracle WebLogic Server管理コンソール・オンライン・ヘルプ「クラスタ: 構成: JTA」ページで「クラスタ全体の回復の有効化」属性を選択することで、クラスタのすべての介在トランザクション・マネージャにわたる分散トランザクションのクラスタ全体のトランザクション・リカバリを構成できます。

有効な場合、WebLogicクラスタ内の各介在トランザクション・マネージャは、クラスタ全体にわたるトランザクションの分散を認識します。これにより、各クラスタ・メンバー上の介在トランザクション・マネージャは、特定のXAコールを処理するか、または別のクラスタ・メンバーの適切な介在トランザクション・マネージャに転送するかを判断できます。

WebLogicのトランザクション処理の詳細は、「障害の管理の理解」および『Oracle WebLogic Server JTAアプリケーションの開発』のサード・パーティのトランザクション・マネージャによって管理されるトランザクションへの参加に関する項を参照してください。