複数の XAR の使用

制約事項: 本トピックは、Enterprise Server 機能が有効な場合にのみ該当します。

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

シナリオ:RM スイッチ モジュール タイプが異なる複数の XAR
単一の エンタープライズ サーバー リージョンの場合、RM スイッチ モジュール タイプごとに 1 つの XAR を定義および使用できます。このような単純なシナリオでは、ソース コードの再コンパイルはまったく必要なく、特別な XAR 構成も必要ありません。Enterprise Server によってすべての Web サービスが適切に処理されます。
シナリオ:同じタイプの複数の XAR

このシナリオでは、同じタイプの 2 つの XAR があるとします。両方とも 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 の両方と一致させることを強くお勧めします。