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

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

PostgreSQL サーバーの XA 用の構成

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

Windows 環境

ソース コード
EDB PostgreSQL RM スイッチ モジュールの COBOL ソース ファイルである ESPGSQLXA.CBL は、デフォルトでは、%ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\xa ディレクトリに配置されています。
注: ユーザー資格情報を xa_open 文字列ではなくプログラムで指定する場合は、COBOL ソース ファイルの Customization section に手順が記載されています。
ビルド要件
EDB 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 [directives]
方法 2
  1. アプリケーションに応じて 32 ビットまたは 64 ビットの Enterprise Developer コマンド プロンプトを起動します。
  2. %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\xa ディレクトリ (デフォルトの場所) にあるすべてのファイルを、WRITE 権限がある任意の場所にコピーします。
  3. コピーしたファイルが含まれているディレクトリに移動します。
  4. 次のように入力します。 build pg [directives]
ビルド出力
ビルド プロセスによって、ESPGSQLXA.CBL COBOL ソース ファイルから、バイナリ形式の次の 2 つのスイッチ モジュール ファイルが生成されます。
バイナリ ファイル タイプ
ESPGSQLXA_S.DLL 静的
ESPGSQLXA.DLL 動的

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

UNIX 環境

ソース コード
EDB PostgreSQL RM スイッチ モジュールの COBOL ソース ファイルである ESPGSQLXA.CBL は、デフォルトでは、$COBDIR/src/enterpriseserver/xa ディレクトリに配置されています。
注: ユーザー資格情報を xa_open 文字列ではなくプログラムで指定する場合は、COBOL ソース ファイルの Customization section に手順が記載されています。
ビルド要件
ビルド スクリプトでは、現在の有効な作業モードを使用して、スイッチ モジュールのビルド方法が決定されます。
スイッチ モジュールのビルド
$COBDIR/src/enterpriseserver/xa ディレクトリには、スイッチ モジュールのビルドに使用できる build スクリプト ファイルが含まれています。
  1. $COBDIR/src/enterpriseserver/xa ディレクトリ (デフォルトの場所) にあるすべてのファイルを、WRITE 権限がある任意の場所にコピーします。
  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 フローに参加するようになるため、この方法を使用することをお勧めします。

すべての環境

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

XA リソースの作成

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

  1. Enterprise Server Administration のホーム ページのサーバーの表で、トランザクション データ ファイルを参照するエンタープライズ サーバー リージョンの行の左にある [Edit] をクリックします。
  2. [XA Resources] タブをクリックします。
  3. XAR の次の詳細を指定します。
    オプション 説明
    [ID] XAR の一意の ID。
    [Name] XAR の一意の名前。
    [Module] RM スイッチ モジュール実行可能ファイル (Windows プラットフォームの場合は .dll、UNIX プラットフォームの場合は .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) を定義するには」を参照してください。
  4. [Enabled] を選択します。
  5. [OK] をクリックします。

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