WebLogic JTA プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

トランザクションのコンフィグレーション

以下の節では、トランザクション関連のコンフィグレーション タスクについて説明します。

 


トランザクション コンフィグレーションの概要

Administration Console は、WebLogic JTA などの WebLogic Server の機能をコンフィグレーションするために使用するインタフェースを備えています。コンフィグレーション プロセスでは、属性の値を指定する必要があります。それらの属性によって、以下のようなトランザクション環境が定義されます。

また、EJB、JDBC データ ソース、JMS など、トランザクションに参加可能な Java EE コンポーネントの管理についてもよく理解しておく必要があります。

注意 : WebLogic Scripting Tool (WLST。『WebLogic Scripting Tool ガイド』を参照) または JMX (『JMX によるカスタム管理ユーティリティの開発』を参照) で、トランザクション関連の設定をコンフィグレーションすることもできます。

 


JTA のコンフィグレーション

WebLogic JTA および任意のトランザクション参加コンポーネントをコンフィグレーションすると、システムは JTA API および WebLogic JTA 拡張機能を使用してトランザクションを管理できます。以下の点に注意してください。

リソース登録解除の猶予期間

アプリケーションと一緒にパッケージ化された JDBC データ ソース モジュールなど、必要に応じてアンデプロイしたり再デプロイしたりすることのあるリソースについては、ドメインに対して [リソース登録解除の猶予期間] を設定することで、リソースが登録解除されていたためにトランザクションが破棄される可能性を最小限にできます。猶予期間とは、リソースが登録解除される前に、トランザクション マネージャがトランザクションの完了を待機する秒数です。

指定された猶予期間の間、unregisterResource 呼び出しは自身が返るまでブロックを行い、関連するリソースに対して新しいトランザクションは開始されません。リソースに対して未処理のトランザクションの数が 0 になると、unregisterResource 呼び出しは即座に返ります。

猶予期間の終わりに、まだリソースに関連する未処理のトランザクションがある場合は、unregisterResource が返り、リソースが以前登録されていたサーバ上にログ メッセージが書き込まれます。

トランザクションを管理するための追加属性

デフォルトでは、グローバル トランザクションに参加している XA リソースが WebLogic Server トランザクション マネージャからの XA 呼び出しに応答しないと、そのリソースに異常があって使用できないことを示すフラグが付加されます。また、リソースのスレッドを保持するため、このリソースに対する以降のすべての呼び出しがブロックされます。障害は、トランザクションに異常がある場合でも、リソースに異常がある場合でも発生する可能性があります。これら 2 つの原因の間に区別はありません。どちらの場合も、リソースに異常があるものとしてマークされます。

この制約を緩和するため、WebLogic Server には表 3-1 に示すコンフィグレーション属性が用意されています。

表 3-1 XA リソースのヘルス モニタ コンフィグレーション属性
属性
MBean
定義
ResourceHealthMonitoring
JDBCXAParamsBean MBean の ResourcehealthMonitoring 属性。
JDBC データ ソースのリソースのヘルス モニタを有効または無効にする。この属性は、データベース接続に XA JDBC ドライバを使用するデータ ソースにのみ適用される。非 XA JDBC ドライバを使用している場合は無視される。
true に設定すると、リソースのヘルス モニタが有効になる。MaxXACallMillis 属性に指定した期間内に XA リソースが XA 呼び出しへの応答に失敗すると、データ ソースに異常があるものとしてマークされ、リソースに対する以降の呼び出しがすべてブロックされる。
false に設定すると、この機能が無効になる。
デフォルト : true
JDBC データ ソースの [リソース ヘルス モニタ] 属性は、Administration Console の [JDBC データ ソース : コンフィグレーション : 接続プール] タブで設定できる。
MaxXACallMillis
XA リソースに対する XA 呼び出しの最長許容期間をミリ秒で設定する。この設定は、ドメイン全体に適用される。
デフォルト : 120000
MaxResourceUnavailableMillis
XA リソースが異常とマークされる最長期間 (ミリ秒)。この期間を過ぎると、トランザクション マネージャで XA リソースを明示的に再登録しなくても、リソースが再び使用可能と宣言される。この設定は、ドメイン全体に適用される。
デフォルト : 1800000
MaxResourceRequestOnServer
ドメイン内の各サーバで許容するリソースへの同時要求の最大数。
デフォルト : 50
最小値 : 10
最大値 : java.lang.Integer.MAX_VALUE

JDBC データ ソースの [リソース ヘルス モニタ] を除き、これらの属性は、ドメインが非アクティブの時に config.xml ファイルで直接設定します。Administration Console では設定できません。次の例は、これらの属性に関する部分をコンフィグレーション ファイルから抜粋したものです。

...
   <JTA
MaxUniqueNameStatistics="5"
TimeoutSeconds="300"
RecoveryThresholdMillis="150000"
MaxResourceUnavailableMillis="900000"
MaxResourceRequestOnServer="60"
MaxXACallMillis="180000"
/>

 


ドメイン間トランザクションに対するドメインのコンフィグレーション

トランザクション マネージャで分散トランザクションを管理する場合、トランザクションを準備し、その後コミットまたはロールバックするために、トランザクション マネージャはすべての参加リソースと通信できる必要があります。これは、WebLogic ドメインが、分散トランザクションにおいて、トランザクション マネージャまたはトランザクション参加コンポーネント (リソース) として機能する場合に当てはまります。以下の節では、ドメイン間トランザクションが可能なようにドメインをコンフィグレーションする方法を説明します。

以下の節では、ドメイン間トランザクション用にドメインをコンフィグレーションする方法について説明します。

ドメイン間トランザクションの制限事項

ドメイン間トランザクションには以下の制限事項があります。

注意 : グローバル トランザクションでは、非 XA ドライバ (2 フェーズ コミットのエミュレート) ではなく、XA ドライバを使用することをお勧めします。グローバル トランザクションで非 XA ドライバを使用することにはリスクが伴います。『WebLogic JDBC のコンフィグレーションと管理』の「非 XA ドライバを使用して 2 フェーズ コミットをエミュレートする際の制限およびリスク」を参照してください。

通信チャネルのコンフィグレーション

グローバル トランザクションに参加するすべてのドメインについて、クロス ドメイン セキュリティまたはセキュリティの運用モードを使用し、互換性のある通信チャネルを適切にコンフィグレーションする必要があります。

プロセスで使用されるすべてのドメインについて、クロス ドメイン セキュリティをコンフィグレーションするか、セキュリティの相互運用モードを設定します。どちらの設定もドメイン レベルで設定されるため、ドメインがクロス ドメイン セキュリティとセキュリティの相互運用モードの両方が設定された混在モードになる可能性があります。

以下の節では、グローバル トランザクションの通信チャネルのコンフィグレーションについて説明します。

ドメイン間トランザクション用にどのタイプの通信チャネルをコンフィグレーションする必要があるかについては、次の表を参考に判断してください。

表 3-2 ドメイン間トランザクション用の通信チャネルのコンフィグレーション
ドメイン
10.x および 9.2 MP2 以上
9.0、9.1、および 9.2 MP1 以下
8.1 SP5 以上
8.1 SP4 以下
10.x および 9.2 MP2 以上
両方のドメインをクロス ドメイン セキュリティ用にコンフィグレーションする
または
セキュリティの相互運用モードを使用し、両方のドメインを [デフォルト] または [パフォーマンス] に設定する
10.x または 9.2 MP2 以上のドメインをクロス ドメイン セキュリティ用にコンフィグレーションし、9.0、9.1、または 9.2 MP1 以下のドメインを例外リストに追加する
または
セキュリティの相互運用モードを使用し、両方のドメインを [デフォルト] または [パフォーマンス] に設定する
10.x または 9.2 MP2 以上のドメインをクロス ドメイン セキュリティ用にコンフィグレーションし、8.1 ドメインを例外リストに追加する
または
セキュリティの相互運用モードを使用し、両方のドメインを [パフォーマンス] に設定する
10.x または 9.2 MP2 以上のドメインをクロス ドメイン セキュリティ用にコンフィグレーションし、8.1 ドメインを例外リストに追加する
または
セキュリティの相互運用モードを使用し、10.x または 9.2 MP2 以上のドメインを [互換性] に設定する
9.0、9.1、および 9.2 MP1 以下
10.x または 9.2 MP2 以上のドメインをクロス ドメイン セキュリティ用にコンフィグレーションし、9.0、9.1、または 9.2 MP1 以下のドメインを例外リストに追加する
または
セキュリティの相互運用モードを使用し、両方のドメインを [デフォルト] または [パフォーマンス] に設定する
両方のドメインを [デフォルト] または [パフォーマンス] に設定する
両方のドメインを [パフォーマンス] に設定する
9.x のドメインを [互換性] に設定する
8.1 SP5 以上
10.x または 9.2 MP2 以上のドメインをクロス ドメイン セキュリティ用にコンフィグレーションし、8.1 ドメインを例外リストに追加する
または
セキュリティの相互運用モードを使用し、両方のドメインを [パフォーマンス] に設定する
両方のドメインを [パフォーマンス] に設定する
両方のドメインを [パフォーマンス] に設定する
8.1 SP5 以上のドメインを [互換性] に設定する
8.1 SP4 以下
10.x または 9.2 MP2 以上のドメインをクロス ドメイン セキュリティ用にコンフィグレーションし、8.1 ドメインを例外リストに追加する
または
セキュリティの相互運用モードを使用し、10.x または 9.2 MP2 以上のドメインを [互換性] に設定する
9.x のドメインを [互換性] に設定する
8.1 SP5 以上のドメインを [互換性] に設定する
なし

注意 : [セキュリティの相互運用モード] が [パフォーマンス] に設定されている場合、ドメイン間におけるドメインの信頼関係の設定は必須ではありません。

クロスドメイン セキュリティのコンフィグレーション

クロス ドメイン セキュリティでは、資格マッパーを使用することで、グローバル トランザクション内のサーバ間に、互換性のある通信チャネルをコンフィグレーションすることを可能にしています。トランザクションに参加するすべてのドメイン ペアについて、資格マッパーを 1 つずつコンフィグレーションします。CrossDomainConnector セキュリティ ロールに属す資格群は、ドメイン ペアごとに異なっていても構いません。

『WebLogic Server のセキュリティ』の「クロスドメイン セキュリティのコンフィグレーション」および「クロスドメイン セキュリティ用の資格マッピングのコンフィグレーション」を参照してください。

クロス ドメイン セキュリティは遷移的ではない

トランザクションに参加する複数のサーバでは、相互にクロスドメインの資格マッピングを設定します。ドメインの信頼関係とは異なり、クロス ドメイン セキュリティのコンフィグレーションは遷移的ではありません。つまり、AB を信頼し、BC を信頼していても、それによって AC を信頼しているということにはなりません。

以下のシナリオについて考察します。

このシナリオでクロスドメインの資格マッピングを設定するには、以下を行う必要があります。

  1. DomainA において DomainB のクロスドメイン セキュリティを設定します。
  2. DomainB において DomainA のクロスドメイン セキュリティを設定します。
  3. DomainA において DomainC のクロスドメイン セキュリティを設定します。
  4. DomainC において DomainA のクロスドメイン セキュリティを設定します。
  5. DomainB において DomainC のクロスドメイン セキュリティを設定します。
  6. DomainC において DomainB のクロスドメイン セキュリティを設定します。

DomainD はトランザクションに参加しないため、クロスドメインの資格マッピングを設定する必要はありません。ただし、「トランザクションへの参加に基づいて除外リストにドメインを追加する」にある、より詳細な説明を参照してください。

上記の説明を別の方法で表すと、表 3-3 のようになります。チェックマーク (チェックマーク) は、そのドメインの組み合わせではクロス ドメイン セキュリティをコンフィグレーションする必要があることを示しています。

表 3-3 参加ドメインが 3 つの場合のクロス ドメイン セキュリティの設定
 
DomainA
DomainB
DomainC
DomainD
DomainA
   
DomainB
   
DomainC
   
DomainD
       

その上でクロスドメイン セキュリティのコンフィグレーションに DomainD を追加し、さらに DomainE も追加する場合、クロスドメインの資格マップは表 3-4 のようになります。チェックマーク (チェックマーク) は、そのドメインの組み合わせではクロス ドメイン セキュリティをコンフィグレーションする必要があることを示しています。

表 3-4 参加ドメインが 5 つの場合のクロス ドメイン セキュリティの設定
 
DomainA
DomainB
DomainC
DomainD
DomainE
DomainA
 
DomainB
 
DomainC
 
DomainD
 
DomainE
 

トランザクションへの参加に基づいて除外リストにドメインを追加する

クロス ドメイン セキュリティがコンフィグレーションされていないドメインのサーバが、クロス ドメイン セキュリティがコンフィグレーションされているドメインのサーバとのトランザクションに参加する場合、クロス ドメイン セキュリティがコンフィグレーションされているドメインの除外リストにその参加ドメインを追加する必要があります。

クロス ドメイン セキュリティがコンフィグレーションされているドメインすべての除外リストにドメインを追加する必要はありません。ただし、除外リストへ追加する必要があるケースでは、ドメインとのトランザクションへの参加を明示的に行う必要があります。

以下のシナリオについて考察します。

この場合、トランザクション #2 のために DomainD を DomainB の除外リストに追加する必要があります。

DomainA および DomainC のサーバとのトランザクションには参加していないため、これら 2 つのドメインの除外リストには DomainD を含める必要はありません。

クロス ドメイン セキュリティをコンフィグレーションする際の重要な考慮事項

クロス ドメイン セキュリティをコンフィグレーションする際には、以下のガイドラインを考慮に入れてください。

セキュリティの相互運用モードのコンフィグレーション

[セキュリティの相互運用モード] を使用すると、グローバル トランザクション内のサーバ間に、互換性のある通信チャネルをコンフィグレーションできます。次の手順に従って、セキュリティの相互運用モードをコンフィグレーションします。

  1. ドメインの信頼関係を確立します。
  2. 表 3-2 の値を使用して、セキュリティの相互運用モードをコンフィグレーションします。
注意 : [セキュリティの相互運用モード] が [パフォーマンス] に設定されている場合、ドメイン間におけるドメインの信頼関係の設定は必須ではありません。
ドメインの信頼関係を確立する

すべての参加ドメインのセキュリティ資格を同じ値に設定します。これにより、ドメインの信頼関係が確立します。

セキュリティの相互運用モードをコンフィグレーションする

参加しているすべてのサーバの [セキュリティの相互運用モード] パラメータを同じ値に設定する必要があります。

有効な値は以下のとおりです。

参加しているサーバのセキュリティの相互運用モードをコンフィグレーションするには、以下を参照してください。

管理ユーザを必要とする JNDI ルックアップ用にドメインをコンフィグレーションする

以下では、管理ユーザを必要とする JNDI ルックアップをトランザクションが使用する際にセキュリティの相互運用モードをコンフィグレーションする方法について説明します。

セキュリティの相互運用モードを [互換性] に設定すると、介在者の攻撃 (man-in-the-middle attack) を受ける可能性があります。

 


ドメイン内トランザクションに対するドメインのコンフィグレーション

セキュリティの相互運用モードを使用して、同じドメイン内のトランザクションに参加するサーバ間に、互換性のある通信チャネルを正しくコンフィグレーションする必要があります。「セキュリティの相互運用モードのコンフィグレーション」を参照してください。

ドメイン内トランザクション用にどのタイプの通信チャネルをコンフィグレーションする必要があるかについては、以下の情報を参考に判断してください。

 


トランザクション ログ ファイル

各サーバには、そのサーバで調整されてコミットされたが、未完了の可能性があるトランザクションの情報を格納するトランザクション ログが備わっています。WebLogic Server では、システムのクラッシュやネットワーク障害からの回復時にトランザクション ログを使用します。トランザクション ログを直接見ることはできません。レコードはバイナリ形式で、サーバのデフォルト永続ストアに格納されます。

クラスタ内のサーバに対するトランザクション回復サービスの移行機能を利用するには、トランザクション ログをサーバとそのバックアップ サーバが使用できる場所 (デュアルポート SCSI ディスクまたは SAN (Storage Area Network) を推奨) に格納する必要があります。詳細については、「デフォルト永続ストアへのパスの設定」を参照してください。

デフォルトのストアがトランザクション ログ レコードの保存先とするファイル システムで領域が不足したり、アクセス不能になったりすると、commit()SystemException を送出し、トランザクション マネージャによってシステム エラー ログにメッセージが書き込まれます。使用できる領域が増えるまで、トランザクションはコミットされません。

デフォルト永続ストアへのパスの設定

管理サーバを含む、各サーバ インスタンスには、デフォルトの永続ストアがあります。これは、特定のストアを明示的に選択する必要がなく、システムのデフォルトのストレージ メカニズムを使用することで最適に動作するサブシステムから使用することができる、ファイルベースのストアです。トランザクション マネージャは、デフォルト永続ストアを使用して、トランザクション ログ レコードを格納します。多くの場合、デフォルトの永続ストアは、コンフィグレーションを必要としません。ただし、トランザクション回復サービスの移行を有効化するには、オリジナルのサーバで障害が発生した場合に、クラスタ内の別のサーバで使用できる、永続ストレージ ソリューションに、データ ファイルを格納するよう、デフォルトの永続ストアをコンフィグレーションする必要があります。

手順については、Administration Console オンライン ヘルプの「トランザクション回復サービスの移行のためのデフォルト永続ストアのコンフィグレーション」を参照してください。

デフォルト永続ストアの同期書き込みポリシーの設定

WebLogic Server は、デフォルト永続ストアを使用して、トランザクション ログ レコードを格納します。デフォルト ストアの書き込みポリシーを選択することで、WebLogic Server がレコードをディスクに書き込む方式を変更できます。以下のいずれかのオプションを選択できます。

Windows では [Direct-Write] トランザクション ログ ファイル書き込みポリシーが指定されていても、トランザクション データがディスクに直接書き込まれずにオンディスク キャッシュに残される場合があります。この場合、停電などによってオンディスク キャッシュのデータが失われるおそれがあり、トランザクションとしては安全とはいえません。Windows で [Direct-Write] トランザクション ログ ファイル書き込みポリシーを使用している場合にキャッシュ データの消失を回避するには、ディスクの書き込みキャッシュをすべて無効にするか (デフォルトでは有効)、またはシステムのバッテリー バックアップを使用してください。

手順については、Administration Console オンライン ヘルプの「トランザクション回復サービスの移行のためのデフォルト永続ストアのコンフィグレーション」を参照してください。


ページの先頭       前  次