複数の XAR の使用

Enterprise Server では、単一の エンタープライズ サーバー リージョンに対する複数の XAR の定義がサポートされています。次のシナリオは、複数の XAR を使用する場合に最良の結果を実現する、XAR 構成およびアプリケーション編成に関する推奨事項を示しています。

シナリオ:RM スイッチ モジュール タイプが異なる複数の XAR
単一の エンタープライズ サーバー リージョンの場合、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 が使用されるようにするための手順が必要です。

  1. 各 XAR に一意な XAR ID を割り当てます。
  2. 適切なプリプロセッサを使用し、XAID コンパイラ指令オプションを含めて、各 SQL プログラム モジュールを別々にコンパイルします。プログラムごとに、XAID コンパイラ指令オプションを、対応する適切な XAR ID の値に設定します。
シナリオ:同じプログラム モジュールから実行される複数の XAR
このシナリオでは、同じタイプまたは異なるタイプの 2 つの別個の XAR にアクセスする必要があるアプリケーションがありますが、両方に「同じソース コード モジュール」内からアクセスする必要があります。この場合は、次の 2 つのオプションがあります。
ソース コードを分ける
ソース コードに必要になる変更が最も少ないため、このオプションを強く推奨します。
  1. ソース コード モジュールを別個の複数のモジュールに分けます (別個の XAR を必要とするモジュールごとに 1 つ)。
  2. 対応する適切な XAR ID の値に設定された XAID コンパイラ指令オプションを使用して、各プログラム モジュールをコンパイルします。
ソース コードを変更する
DB2 アプリケーション
  • プログラムで EXEC SQL 'SET CONNECTION connection-name' 文を使用して、現在の接続を明示的に指定します。connection-name は、xa_open 文字列で使用されるデータベース エイリアスと一致します。
  • 他のソース コード モジュールのコンパイル時に 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 の両方と一致させることを強くお勧めします。