Enterprise Server では、単一の enterprise server regionに対する複数の XAR の定義がサポートされています。
- シナリオ:RM スイッチ モジュール タイプが異なる複数の XAR
- 単一の enterprise server regionの場合、RM スイッチ モジュール タイプごとに 1 つの XAR を定義および使用できます。このような単純なシナリオでは、ソース コードの再コンパイルはまったく必要なく、特別な XAR 構成も必要ありません。
Enterprise Server によってすべての
CICS トランザクション、
Web サービス, 、およびバッチ ジョブが適切に処理されます。
- シナリオ:同じタイプの複数の XAR
-
このシナリオでは、アプリケーションに 3 つの XAR (すべて同じタイプ) が必要になると仮定しますが、CICS アプリケーションのために必要なのは 1 つの XAR のみです。他の 2 つは、バッチ ジョブのみで使用されます。
ここでは、xa_open 文字列に BatchOnly=T を含めることで、特別な構成オプションなしで CICS アプリケーションのための XAR、およびバッチ ジョブのために使用される 2 つの XAR を定義します。詳細は、「SQL の xa_open 文字列構成オプション」を参照してください。
- シナリオ:同じタイプの複数の XAR
-
このシナリオでは、同じタイプの 2 つの XAR があるとします。両方とも CICS アプリケーションまたは Web サービス アプリケーションのために必要となり、それぞれが、そのアプリケーションによって実行される異なる SQL プログラム モジュールで使用されます。
ここでは、Enterprise Server での SQL 文の実行時にすべての SQL 文で必ず適切な XAR が使用されるようにするための手順が必要です。
- 各 XAR に一意な XAR ID を割り当てます。
- 適切なプリプロセッサを使用し、XAID コンパイラ指令オプションを含めて、各 SQL プログラム モジュールを別々にコンパイルします。プログラムごとに、XAID コンパイラ指令オプションを、対応する適切な XAR ID の値に設定します。
- シナリオ:同じプログラム モジュールから実行される複数の XAR
- このシナリオでは、同じタイプまたは異なるタイプの 2 つの別個の XAR にアクセスする必要があるアプリケーションがありますが、両方に "同じソース コード モジュール" 内からアクセスする必要があります。この場合は、次の 2 つのオプションがあります。
- ソース コードを分ける
- ソース コードに必要になる変更が最も少ないため、このオプションを強く推奨します。
- ソース コード モジュールを別個の複数のモジュールに分けます (別個の XAR を必要とするモジュールごとに 1 つ)。
- 対応する適切な XAR ID の値に設定された XAID コンパイラ指令オプションを使用して、各プログラム モジュールをコンパイルします。
- ソース コードを変更する
-
- DB2 アプリケーション
-
- プログラムにおいて EXEC SQL 'SET CONNECTION connection-name' 文を使用して、現在の接続を明示的に指定します。ここでの connection-name は、xa_open 文字列で使用されるデータベース エイリアスと一致します。
- 他のソース コード モジュールのコンパイル時に XAID コンパイラ指令オプションを指定する場合、混同を避けるために、XAID 値を connection-name、および XAR 定義において指定されている RM ID の両方と一致するように設定することを強く推奨します。
- ユーザー偽装が必要な場合は、XAR を静的に登録する必要があります。
- SQL Server アプリケーション
-
- プログラムにおいて EXEC SQL 'SET CONNECTION connection-name' 文を使用して、現在の接続を明示的に指定します。
- ここでは、connection-name は xa_open 文字列内の CONNECTNAME パラメーターと一致します。CONNECTNAME が存在しない場合は、connection-name が、XAR 定義で指定されている RM ID と一致する必要があります。
- ソース コード モジュールのコンパイル時に XAID コンパイラ指令オプションを指定する場合、混同を避けるために、その値が connection-name、および XAR 定義において指定されている RM ID の両方と一致するようにすることを強く推奨します。
- 適用されるすべての SQL 文において 'AT dbname' プレフィックス句を使用して、使用される接続を明示的に指定します。
- ここでは、dbname は xa_open 文字列内の CONNECTNAME パラメーターと一致します。CONNECTNAME が存在しない場合は、dbnameが、XAR 定義で指定されている RM ID と一致する必要があります。
- 他のソース コード モジュールのコンパイル時に XAID コンパイラ指令オプションを指定する場合、混同を避けるために、その値が dbname、および XAR 定義において指定されている RM ID の両方と一致するようにすることを強くお勧めします。
- Oracle アプリケーション
- 適用されるすべての SQL 文において 'AT dbname' プレフィックス句を使用して、使用される接続を明示的に指定します。
- ここでは、dbname は xa_open 文字列内の DB パラメーターと一致します。DB パラメーターが存在しない場合は、dbnameが、XAR 定義で指定されている RM ID と一致する必要があります。
- 他のソース コード モジュールのコンパイル時に XAID コンパイラ指令オプションを指定する場合、混同を避けるために、その値が dbname、および XAR 定義において指定されている RM ID の両方と一致するようにすることを強くお勧めします。
- ユーザー偽装が必要な場合は、XAR を静的に登録する必要があります。
- ODBC アプリケーションの汎用 1 フェーズコミット
-
- プログラムにおいて EXEC SQL 'SET CONNECTION connection-name' 文を使用して、現在の接続を明示的に指定します。
- ここでは、connection-name は、XAR 定義で指定されている RM ID と一致します。
- 他のソース コード モジュールのコンパイル時に XAID コンパイラ指令オプションを指定する場合、混同を避けるために、その値が connection-name、および XAR 定義において指定されている RM ID の両方と一致するようにすることを強く推奨します。
- 適用されるすべての SQL 文において 'AT dbname' プレフィックス句を使用して、使用される接続を明示的に指定します。
- ここでは、dbname は、XAR 定義で指定されている RM ID と一致します。
- 他のソース コード モジュールのコンパイル時に XAID コンパイラ指令オプションを指定する場合、混同を避けるために、その値が dbname、および XAR 定義において指定されている RM ID の両方と一致するようにすることを強くお勧めします。