6.3 リソース・マネージャとしてのPostgreSQLの構成

PostgreSQLをXAトランザクションのリソース・マネージャとして使用するには、準備完了状態のトランザクションおよびセッション・アフィニティを有効にする必要があります。

PostgreSQLをリソース・マネージャとして使用しない場合は、この項をスキップします。
デフォルトでは、max_prepared_transactionsの値は0に設定され、準備完了状態のトランザクションは無効になります。PostgreSQLで準備完了状態のトランザクションを有効にしないと、XAトランザクションを開始したときに次のエラー・メッセージが表示されます。
Exception: org.postgresql.util.PSQLException: ERROR: prepared transactions are disabled
  1. アプリケーションのpom.xmlファイルに次の依存関係を追加します。
    <dependency>
    	<groupId>org.postgresql</groupId>
    	<artifactId>postgresql</artifactId>
    	<version>RELEASE</version>
    </dependency>
  2. pgAdmin 4または他のPostgreSQLツールを使用してデータベースに接続し、次のSQL文を実行します。max_prepared_transactionsの値を正の数(100など)に設定して、PostgreSQLで準備完了状態のトランザクションを有効にします。
    SHOW max_prepared_transactions; 
    ALTER SYSTEM SET max_prepared_transactions = 100;
  3. PostgreSQLサービスを再起動します。
    services restart postgresql
  4. リソース・マネージャとしてPostgreSQLを使用するトランザクション参加側サービスのセッション・アフィニティまたはスティッキー・セッションを有効にします。セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。「XA参加側のセッション・アフィニティの有効化」を参照してください。