この章では、WebLogic Serverからエンタープライズ情報システムへのアウトバウンド通信に使用されるシステム・レベルのトランザクション管理規約について説明します。
この章の内容は以下のとおりです。
トランザクション管理の詳細は、『JSR 322: Java EE Connector Architecture 1.6』の第7章「Transaction Management」を参照してください。EISからWebLogic Serverへのインバウンド通信におけるトランザクション管理の詳細は、「トランザクション・インフロー」を参照してください。
トランザクションとは、データの一貫性と整合性を維持するために、すべてのデータに関して必ず一斉にコミットするか、またはまったくコミットしないかのどちらかの一連の処理のことです。EISへのトランザクション・アクセスは、ビジネス・アプリケーションにとって重要な要件です。Java EEコネクタ・アーキテクチャ1.6では、トランザクションの使用をサポートしています。
WebLogic Serverでは、WebLogic Serverのトランザクション・マネージャ実装を利用して、XAやローカルのトランザクションに対応するリソース・アダプタ、またはトランザクションなしのリソース・アダプタをサポートしています。ra.xml
ファイルのtransaction-support
要素でトランザクション・サポートの種類を定義します。リソース・アダプタでサポートできるのは1種類のみです。weblogic-ra.xml
デプロイメント記述子のtransaction-support
要素を使用すると、ra.xml
で指定された値をオーバーライドできます。詳細は、「表A-18 default-connection-propertiesのサブ要素」の「トランザクション・レベルの構成」および「transaction-support」を参照してください。
Java EEコネクタ・アーキテクチャ1.6に準拠するリソース・アダプタは、トランザクション・サポートのレベルをオプションで実行時に指定できます。これにはTransactionSupport
インタフェースの実装が必要です。詳細は、「トランザクション・サポート・レベルの指定および取得」を参照してください。
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』では、リソース・アダプタが実行時に提供するトランザクション・サポートのレベルをオプションで決定および分類できると指定されています。実行時のトランザクション・サポートのレベルに関する情報を公開するには、ManagedConnectionFactory
がTransactionSupport
インタフェースを実装する必要があります。『JSR 322: Java EE Connector Architecture 1.6』では、記述子、注釈およびTransactionSupport
インタフェースで設定されるトランザクション・サポート・レベルの規則と優先度も定義されます。たとえば、WebLogic ServerはgetTransactionSupport
メソッドによって返される値を使用し、リソース・アダプタのデプロイメント記述子や@Connector
メタデータ注釈によって指定される値は無視します。
WebLogic Serverは、ConnectorConnectionPoolRuntimeMBean.RuntimeTransactionSupport
MBean属性および管理コンソールで、実行時トランザクション・サポート・レベルの情報を公開しています。
管理コンソールで実行時トランザクション・レベル・サポートを確認するには、次の手順を実行します。
「デプロイメントのサマリー」ページでリソース・アダプタを選択します。
「監視」→「アウトバウンド接続プール」をクリックし、「実行時トランザクションのサポート」列の項目を確認します。
リソース・アダプタのトランザクション・サポート・レベルは、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
デプロイメント記述子でのトランザクション・レベルの指定の詳細は、付録A「weblogic-ra.xmlスキーマ」を参照してください。
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
がSubject
として使用されます。
注意: EISで明示的な資格証明が必要でない場合、この特別な資格証明マッピングを構成する必要はありません。 |