RDBMS 用の XA コネクタのビルドおよび構成

PostgreSQL モジュールは、PostgreSQL の SQL 呼び出しを利用して 2 フェーズ コミット サポートを提供し、このスイッチ モジュールを使用して行われたすべてのデータベース接続が必ず単一の XA トランザクションに参加するようにします。

PostgreSQL サーバーの XA 用の構成

重要: PostgreSQL RM スイッチ モジュールを使用する前に、max_prepared_transactions プロパティの値をデフォルト値の 0 (ゼロ) から 0 よりも大きい値に変更して、PostgreSQL サーバーを構成する必要があります。この変更を行った後、次に進む前に PostgreSQL サーバーを再起動する必要があります。max_prepared_transactions 構成プロパティの詳細については、PostgreSQL の製品ドキュメントを参照してください。

Windows 環境

ソース コード
PostgreSQL RM スイッチ モジュールの COBOL ソース ファイルである ESPGSQLXA.CBL は、デフォルトでは、%ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\xa ディレクトリに配置されています。
注: ユーザー資格情報を xa_open 文字列ではなくプログラムで指定する場合は、COBOL ソース ファイルの Customization section に手順が記載されています。
ビルド要件
PostgreSQL RM スイッチ モジュールをビルドするには、使用している Windows のバージョン用の Windows ソフトウェア開発キット (SDK) がインストールされている必要があります。

このスイッチ モジュールをビルドする前に、Windows SDK LIB ディレクトリのサブディレクトリにある odbc32.lib ファイルのパスが LIB 環境変数に含まれていることを確認してください。

スイッチ モジュールのビルド
方法 1
  1. 管理者として、アプリケーションに応じて 32 ビットまたは 64 ビットの Enterprise Developer コマンド プロンプトを起動します。
  2. %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\xa ディレクトリ (デフォルトの場所) に移動します。
  3. build pg」と入力します。
方法 2
  1. アプリケーションに応じて 32 ビットまたは 64 ビットの Enterprise Developer コマンド プロンプトを起動します。
  2. %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\xa ディレクトリ (デフォルトの場所) にあるすべてのファイルを、WRITE 権限がある任意の場所にコピーします。
  3. コピーしたファイルが含まれているディレクトリに移動します。
  4. build pg」と入力します。
ビルド出力
ビルド プロセスによって、ESPGSQLXA.CBL COBOL ソース ファイルから、バイナリ形式の次の 2 つのスイッチ モジュール ファイルが生成されます。
バイナリ ファイル タイプ
ESPGSQLXA_S.DLL 静的
ESPGSQLXA.DLL 動的

RM スイッチ モジュールは、使用するバイナリ ファイルに応じて、Enterprise Server に動的に登録することも、静的に登録することもできます。動的なスイッチ モジュールを使用すると、グローバル トランザクションで使用されているアクティブなデータベースのみが TM/RM の XA フローに参加するようになるため、Micro Focus ではこの方法を使用することをお勧めします。

Linux 環境

ソース コード
PostgreSQL RM スイッチ モジュールの COBOL ソース ファイルである ESPGSQLXA.CBL は、デフォルトでは、$COBDIR/src/enterpriseserver/xa ディレクトリに配置されています。
注: ユーザー資格情報を xa_open 文字列ではなくプログラムで指定する場合は、COBOL ソース ファイルの Customization section に手順が記載されています。
ビルド要件
ビルド スクリプトでは、現在の有効な作業モードを使用して、スイッチ モジュールのビルド方法が決定されます。
スイッチ モジュールのビルド
$COBDIR/src/enterpriseserver/xa ディレクトリには、スイッチ モジュールのビルドに使用できる build スクリプト ファイルが含まれています。
  1. $COBDIR/src/enterpriseserver/xa ディレクトリ (デフォルトの場所) にあるすべてのファイルを、書き込み権限がある任意の場所にコピーします。
  2. コピーしたファイルが含まれているディレクトリに移動します。
  3. 次のように入力します。 build pg
ビルド出力
ビルド プロセスによって、ESPGSQLXA.CBL COBOL ソース ファイルから、バイナリ形式の次の 4 つの RM スイッチ モジュール ファイルが生成されます。
ESPGSQLXA.so 32 ビット 動的
ESPGSQLXA64.so 64 ビット 動的
ESPGSQLXA_S.so 32 ビット 静的
ESPGSQLXA64_S.so 64 ビット 静的

RM スイッチ モジュールは、使用するバイナリ ファイルに応じて、Enterprise Server に動的に登録することも、静的に登録することもできます。動的なスイッチ モジュールを使用すると、グローバル トランザクションで使用されているアクティブなデータベースのみが TM/RM の XA フローに参加するようになるため、Micro Focus ではこの方法を使用することをお勧めします。

すべての環境

追加リソース
xa_open 文字列の定義を含む、PostgreSQL RM スイッチ モジュールの使い方の詳細については、「PostgreSQL xa_open 文字列」を参照してください。

XA リソースの作成

エンタープライズ サーバー リージョン には、トランザクション ファイルが 1 つ以上含まれているデータストアごとに 1 つの XA リソースが必要になります。データストアを含むデータベースを他の COBOL アプリケーションでも使用する場合は、追加の XA リソースが必要です。この場合の対処方法の詳細については、「複数の XAR の使用」を参照してください。

  1. [ESCWA Administration] ページを開き、左側のペインからトランザクション データ ファイルを参照する エンタープライズ サーバー リージョン を選択します。
  2. 右側のペインで [General > XA Resources] をクリックします。
  3. [NEW] をクリックします。
  4. XAR の次の詳細を指定します。
    オプション 説明
    [ID] XAR の一意の ID。
    [Name] XAR の一意の名前。
    [Module] RM スイッチ モジュール実行可能ファイル (Windows プラットフォームの場合は .dllUNIX プラットフォームの場合は .so) の場所を指定します。これはデータベースごとに異なります。MSSQL および Azure SQL の場合は esmssql.dll/.so、PostgreSQL の場合は ESPGSQLXA.dll/.so、DB2 の場合は ESDB2XA.dll/.so です。詳細については、「RM スイッチ モジュールのビルド」を参照してください。
    [Open string] DSN=<datastore-dsn>

    <datastore-dsn> は、構成するデータストアの ODBC データ ソース名です。

    注: これらの必須のオプションに加え、PostgreSQL データベースを使用する場合は USRPASS=userid.password も指定する必要があります。さらに、その他のオプションも必要に応じて指定できます。詳細については、「エンタープライズ サーバー リージョンの XA リソース (XAR) を定義するには」を参照してください。
  5. [SAVE] をクリックします。

    XA リソースがすぐに有効になります。

構成の詳細については、「構成要件」を参照してください。