- Transaction Manager for Microservices開発者ガイド
- XAでのアプリケーションの開発
- XAでのSpring Bootアプリケーションの開発
- トランザクション参加側としてのSpring Bootアプリケーションの構成
- XA準拠リソース・マネージャを使用するSpring Bootアプリケーションの構成
7.10.3.1 XA準拠リソース・マネージャを使用するSpring Bootアプリケーションの構成
XA準拠のリソース・マネージャを使用する場合は、この項に記載されている情報を使用してSpring Boot参加側アプリケーションを構成します。
- MicroTxクライアント・ライブラリのプロパティ値を指定します。次の例では、プロパティのサンプル値を指定しています。ご自身の環境に基づいて値を指定してください。 spring: microtx: participant-url: https://bookTicket-app:8081 propagation-active: true http-client-connection-pool-size: 15 xa-transaction-timeout: 60000 xa-resource-manager-id: 174A5FF2-D8B1-47B0-AF09-DA5AFECA2F61 xa-xa-support: truexa-xa-supportがtrueに設定されていることを確認します。各プロパティおよびその他のオプション・プロパティの詳細は、「Spring Bootアプリケーションのライブラリ・プロパティの構成」を参照してください。 
- MicroTxライブラリ・ファイルをSpring Boot 3.xアプリケーションのpom.xmlファイルにmaven依存関係として含めます。次のサンプル・コードは24.4リリース用です。使用するリリース・バージョンに基づいて、正しいバージョンを指定してください。Spring Boot 3.xアプリケーションは、Java 17で動作します。- 
                                       JDBCアプリケーションでは、 microtx-spring-boot-starterファイルを使用します。<dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter</artifactId> <version>24.4</version> </dependency>
- 
                                       HibernateがJPAプロバイダの場合は、 microtx-spring-boot-starterおよびmicrotx-spring-boot-starter-hibernateファイルを使用します。<dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter</artifactId> <version>24.4</version> </dependency> <dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter-hibernate</artifactId> <version>24.4</version> </dependency>
- 
                                       EclipseLinkがJPAプロバイダの場合は、 microtx-spring-boot-starterおよびmicrotx-spring-boot-starter-eclipselinkファイルを使用します。<dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter</artifactId> <version>24.4</version> </dependency> <dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter-eclipselink</artifactId> <version>24.4</version> </dependency>
 - 
                                       JDBCアプリケーションでは、 microtx-spring-boot-jaxrs-starterファイルを使用します。<dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-jaxrs-starter</artifactId> <version>24.4</version> </dependency>
- 
                                       HibernateがJPAプロバイダの場合は、 microtx-spring-boot-jaxrs-starterおよびmicrotx-spring-boot-starter-hibernateファイルを使用します。<dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-jaxrs-starter</artifactId> <version>24.4</version> </dependency> <dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter-hibernate</artifactId> <version>24.4</version> </dependency>
- 
                                       EclipseLinkがJPAプロバイダの場合は、 microtx-spring-boot-jaxrs-starterおよびmicrotx-spring-boot-starter-eclipselinkファイルを使用します。<dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-jaxrs-starter</artifactId> <version>24.4</version> </dependency> <dependency> <groupId>com.oracle.microtx</groupId> <artifactId>microtx-spring-boot-starter-eclipselink</artifactId> <version>24.4</version> </dependency>
 
- 
                                       
- Spring JAX-RSアプリケーションの場合のみ、MicroTxライブラリがJAX-RSコールをインターセプトしてトランザクションを管理できるように、次のフィルタを登録する必要があります。Spring RESTアプリケーションでは、このステップをスキップできます。import org.glassfish.jersey.server.ResourceConfig; ... @Component public class Configuration extends ResourceConfig { public Configuration() { ... register(TrmTransactionRequestFilter.class); register(TrmTransactionResponseFilter.class); register(JaxRsXACallbackResource.class); }
- com.oracle.microtx.common.MicroTxConfigパッケージをインポートします。- import com.oracle.microtx.common.MicroTxConfig;
- XADatasourceオブジェクトを初期化します。- MicroTxクライアント・ライブラリは、 - XADatasourceオブジェクトにアクセスする必要があります。このオブジェクトを使用して- XAConnectionオブジェクトおよび- XAResourceオブジェクトを作成し、リソース・マネージャまたはデータベース・サーバーに接続します。次のコードでは、接続オブジェクトを作成する際にアプリケーション・コードの先頭に- XADatasourceオブジェクトをどのように定義するかを示しています。- class oracle.tmm.jta.MicroTxConfig static void initXaDataSource(XADataSource xaDs)- XADataSourceの詳細は、https://docs.oracle.com/javase/8/docs/api/javax/sql/XADataSource.htmlを参照してください。
- トランザクション参加側関数またはブロックで、MicroTxクライアント・ライブラリで使用されるXADatasourceオブジェクトを指定します。リソース・マネージャに接続するための資格証明およびその他の詳細を指定します。//Example for a participant using an Oracle Database: OracleXADataSource dataSource = new oracle.jdbc.xa.client.OracleXADataSource(); dataSource.setURL(url); //database connection string dataSource.setUser(user); //username to access database dataSource.setPassword(password); //password to access database MicroTxConfig.initXaDataSource((XADataSource)dataSource);アプリケーション開発者は、 XADataSourceを割り当てる際に、XA準拠JDBCドライバおよび必要なパラメータを設定する必要があります。MicroTxクライアント・ライブラリは、 XADatasourceオブジェクトを使用してデータベース接続を作成します。
- トランザクション参加側の関数すなわちブロックで、XADatasourceオブジェクトを初期化した後に次のコード行を1回だけ追加します。oracle.tmm.jta.MicroTxConfig.initXaDataSource((XADataSource)xaDs);XADatasourceはJTAで定義されたインタフェースであり、JDBCドライバによって実装が提供されます。MicroTxクライアント・ライブラリは、このオブジェクトを使用してデータベースに接続し、XAトランザクションを開始し、準備、コミット、ロールバックなどの様々な操作を実行します。MicroTxライブラリは、依存関係インジェクションを使用してDMLを実行するためのSQL接続オブジェクトもアプリケーション・コードに提供します。 
- 参加側サービスのコードに次の行を挿入して、アプリケーションがMicroTxクライアント・ライブラリによって渡された接続を使用するようにします。参加側アプリケーションの次のコードは、MicroTxクライアント・ライブラリによって作成されたconnectionオブジェクトを注入します。@Autowired @Qualifier("microTxSqlConnection") @Lazy private Connection connection;
- 参加側サービスのコードに次の行を挿入して、参加側サービスがDML操作を実行するたびに、注入されたconnectionオブジェクトを使用するようにします。Statement stmt1 = connection.createStatement(); stmt1.execute(query); stmt1.close();ここで、 connectionは、前のステップで注入したConnectionオブジェクトの名前です。これらのコード行は、参加側サービスが実行するDML操作ごとに挿入します。DML操作ごとに stmt1やstmt2などの新しい文オブジェクトを作成しますが、MicroTxクライアント・ライブラリによって作成された同一のconnectionオブジェクトを使用します。
- 変更内容を保存します。
MicroTxライブラリおよびXAトランザクション・プロトコルを使用するサンプルSpring RESTトランザクション参加側アプリケーションのソース・コードは、microtx-samples GitHubリポジトリにあるdepartment-springフォルダにあります。これは、MicroTxライブラリとアプリケーションの統合時に参照として使用できます。