6 トランザクション管理

Javaコネクタ・アーキテクチャによって定義されたシステム・レベルのトランザクション管理規約は、トランザクション・マネージャと、EISリソース・マネージャへのトランザクション・アクセスをサポートするEISとの間の規約です。この規約により、WebLogic Serverはトランザクション・マネージャを使用して、EISへのアウトバウンド通信に関して複数のリソース・マネージャ全体のトランザクションを管理できるようになります。

トランザクション管理の詳細は、『JSR 322: Java EE Connector Architecture 1.6』の第7章「Transaction Management」を参照してください。EISからWebLogic Serverへの着信通信におけるトランザクション管理の詳細は、「トランザクション・インフロー」を参照してください

サポートされているトランザクション・レベル

トランザクションとは、データの一貫性と整合性を維持するために、すべてのデータに関して必ず一斉にコミットするか、またはまったくコミットしないかのどちらかの一連の処理のことです。EISへのトランザクション・アクセスは、ビジネス・アプリケーションにとって重要な要件です。 Java EEコネクタ・アーキテクチャ1.7では、トランザクションの使用をサポートしています。

WebLogic Serverでは、WebLogic Serverのトランザクション・マネージャ実装を利用して、XAやローカルのトランザクションに対応するリソース・アダプタ、またはトランザクションなしのリソース・アダプタをサポートしています。ra.xmlファイルのtransaction-support要素でトランザクション・サポートの種類を定義します。リソース・アダプタでサポートできるのは1種類のみです。weblogic-ra.xmlデプロイメント記述子のtransaction-support要素を使用すると、ra.xmlで指定された値をオーバーライドできます。詳細は、表A-18トランザクション・レベルの構成およびExample -00を参照してください。

Java EEコネクタ・アーキテクチャ1.7に準拠するリソース・アダプタは、トランザクション・サポートのレベルをオプションで実行時に指定できます。これにはTransactionSupportインタフェースの実装が必要です。詳細は、「トランザクション・サポート・レベルの指定および取得」を参照してください

XAトランザクションのサポート

XAトランザクションのサポートを使用すると、リソース・アダプタの外部(したがってEISの外部)のトランザクション・マネージャによってトランザクションを管理できるようになります。アプリケーション・コンポーネントがEIS接続リクエストをトランザクションの一部として境界設定する場合、アプリケーション・サーバーはXAリソースをトランザクション・マネージャに登録します。アプリケーション・コンポーネントがその接続を閉じると、アプリケーション・サーバーは、トランザクションが完了した時点でEIS接続をクリーン・アップします。

パフォーマンスを向上するにはXAトランザクション対応のリソース・アダプタのためにLocalTransactionアウトバウンド接続プールを作成することをお薦めします。

ローカル・トランザクションのサポート

ローカル・トランザクションのサポートを使用すると、WebLogic Serverはリソース・アダプタのローカルにあるリソースを管理できます。XAトランザクションとは異なり、通常、ローカル・トランザクションは2フェーズ・コミット・プロトコル(2PC)には関与できません。ローカル・トランザクションのリソース・アダプタが2PCトランザクションに関与できるのは、トランザクションに関わるのがローカル・トランザクション・リソースだけで、WebLogic Serverコネクタ・コンテナがラスト・リソース・コミットによる最適化を利用している場合のみです。その場合、トランザクションの結果はリソース・アダプタのローカル・トランザクションによって制御されます。

通常、ローカル・トランザクションは、そのリソース・アダプタに固有のAPIまたはCCIインタフェース(そのアダプタがサポートしている場合)を使用して開始されます。ローカル・トランザクションのサポートを使用するように構成されたリソース・アダプタ接続を作成し、XAトランザクションのコンテキスト内で使用する場合、WebLogic Serverは、この接続用のローカル・トランザクションを自動的に開始します。XAトランザクションが終了し、コミットの準備が整うと、XAトランザクションの一部のXAリソースに対してprepareがまず呼び出されます。次に、ローカル・トランザクションがコミットされます。

ローカル・トランザクションでコミットが失敗した場合、XAトランザクションとすべてのXAリソースはロールバックされます。コミットが成功した場合、XAトランザクションのすべてのXAリソースはコミットされます。アプリケーション・コンポーネントがその接続を閉じると、WebLogic Serverは、トランザクションが終了した時点で接続をクリーン・アップします。

トランザクション・サポートなし

トランザクションのサポートを使用しないようにリソース・アダプタが構成されている場合でも、そのリソース・アダプタをトランザクションのコンテキストで使用することができます。ただし、その場合、そのリソース・アダプタで使用する接続はトランザクションに関与しないので、トランザクションがないかのように動作します。つまり、これらの接続を使用して実行される操作は、基底のEISに対して直ちに行われるので、トランザクションがロールバックされた場合、これらの接続による変更は元に戻りません。

実行時トランザクション・サポート・レベルの仕様

『JSR 322: Java EE Connector Architecture 1.6』では、リソース・アダプタが実行時に提供するトランザクション・サポートのレベルをオプションで決定および分類できると指定されています。実行時のトランザクション・サポートのレベルに関する情報を公開するには、ManagedConnectionFactoryTransactionSupportインタフェースを実装する必要があります。『JSR 322: Java EE Connector Architecture 1.6』では、記述子、注釈およびTransactionSupportインタフェースで設定されるトランザクション・サポート・レベルの規則と優先度も定義されます。たとえば、WebLogic ServerはgetTransactionSupportメソッドによって返される値を使用し、リソース・アダプタのデプロイメント記述子や@Connectorメタデータ注釈によって指定される値は無視します。

WebLogic Serverは、ConnectorConnectionPoolRuntimeMBean.RuntimeTransactionSupport MBean属性およびWebLogic Server管理コンソールに実行時トランザクション・サポート・レベルの情報を公開します。

WebLogic Server管理コンソールで実行時トランザクション・レベル・サポートを確認するには:

  1. 「デプロイメントのサマリー」ページでリソース・アダプタを選択します。
  2. 「監視」「アウトバウンド接続プール」をクリックし、「実行時トランザクションのサポート」列の項目を確認します。

トランザクション・レベルの構成

リソース・アダプタのトランザクション・サポート・レベルは、Java EE標準のリソース・アダプタ・デプロイメント記述子ra.xmlで指定します。 トランザクション・サポート・レベルを指定するには:
  • トランザクションをサポートしない場合、次のエントリをra.xmlデプロイメント記述子ファイルに追加します。<transaction-support>NoTransaction</transaction-support>

  • XAトランザクションの場合、次のエントリをra.xmlデプロイメント記述子ファイルに追加します。<transaction-support>XATransaction</transaction-support>

  • ローカル・トランザクションの場合、次のエントリをra.xmlデプロイメント記述子ファイルに追加します。<transaction-support>LocalTransaction</transaction-support>

Java EEコネクタ・アーキテクチャ1.6に準拠するリソース・アダプタは、トランザクション・サポートのレベルをオプションで実行時に指定できます。これにはTransactionSupportインタフェースの実装が必要です。詳細は、「トランザクション・サポート・レベルの指定および取得」を参照してください

ra.xmlデプロイメント記述子で指定されたトランザクション・サポートの値は、リソース・アダプタのすべての接続ファクトリのデフォルト値になります。weblogic-ra.xmlデプロイメント記述子のtransaction-support要素で値を指定すると、特定の接続ファクトリについてこの値をオーバーライドできます。

transaction-supportの値は次のいずれかです。

  • NoTransaction

  • LocalTransaction

  • XATransaction

ra.xmlデプロイメント記述子でのトランザクション・レベルの指定の詳細は、『JSR 322: Java EE Connector Architecture 1.6』の20.7項「Resource Adapter XML Schema Definition」を参照してください。weblogic-ra.xmlデプロイメント記述子でのトランザクション・レベルの指定の詳細は、「weblogic-ra.xmlスキーマ」を参照してください。

XAトランザクション・リカバリの資格証明マッピングの構成

XAトランザクションをサポートしているプールに対して、サーバーの起動時にプールで保留中のトランザクションが見つかった場合は、WebLogic Serverは、Java EEコネクタ・アーキテクチャ接続プールのトランザクションをリカバリしようとします。保留中のトランザクションが見つかった場合は、WebLogic Serverはリカバリ時に、ManagedConnectionFactory.createManagedConnection(javax.security.auth.Subject subject、ConnectionRequestInfo cxRequestInfo)を使用して、EISへのManagedConnectionを取得します。

EISがサインオンするために明示的な資格証明(ユーザー名とパスワードなど)が必要な場合は、最初期接続に対して、特別な資格証明マッピングを構成して、適切な資格証明でWebLogic Serverを構成する必要があります。「初期接続:アプリケーションのリクエストがない場合、アダプタからのManagedConnectionが必要」を参照してくださいマッピングが見つからない場合は、WebLogic Serverはサブジェクトとしてnullを使用します。

ノート:

EISで明示的な資格証明が必要でない場合、この特別な資格証明マッピングを構成する必要はありません。