- Transaction Manager for Microservices開発者ガイド
- XAでのアプリケーションの開発
- XAでのSpring Bootアプリケーションの開発
- トランザクション参加側としてのSpring Bootアプリケーションの構成
- 非XAかつ非JDBCのリソースを使用するSpring Bootアプリケーションの構成
7.10.3.4 非XAかつ非JDBCのリソースを使用するSpring Bootアプリケーションの構成
XAもJDBCもサポートしないリソースを使用する場合は、この項に記載されている情報を使用してSpring Boot参加側アプリケーションを構成します。
- 開始する前に、MicroTxライブラリのプロパティ値を構成していることを確認してください。xa-xa-supportがfalseに設定され、xa-llr-supportまたはxa-lrc-supportがtrueに設定されていることを確認します。- ロギング・ラスト・リソース(LLR)の最適化を有効にするには、次のプロパティの値を設定します。spring: microtx: xa-xa-support = false xa-llr-support = true xa-lrc-support = false
- ラスト・リソース・コミット(LRC)の最適化を有効にするには、次のプロパティの値を設定します。 spring: microtx: xa-xa-support = false xa-llr-support = false xa-lrc-support = true
 各プロパティおよびその他のオプション・プロパティの詳細は、「Spring Bootアプリケーションのライブラリ・プロパティの構成」を参照してください。 
- ロギング・ラスト・リソース(LLR)の最適化を有効にするには、次のプロパティの値を設定します。
- 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); }
- セッション・アフィニティを有効にします。「セッション・アフィニティの有効化」を参照してください。
- NonXAResourceインタフェースを実装します。- public class MongoDbNonXAResource implements NonXAResource { // Provide application-specific code for all the methods in the NonXAResource interface. }- NonXAResourceインタフェースの詳細は、Transaction Manager for Microservices Java APIリファレンスを参照してください。- LRCの最適化を有効にした場合、 - recover()メソッドを- NonXAResourceインタフェースに実装する必要はありません。LRCでは、- commit()メソッドが- commitRecordに- NULLを返すためです。
- NonXAResourceインタフェースを実装した後、MicroTxライブラリ・ファイルをインポートし、非XAリソースを生成します。作成した非XAリソースに- @NonXa注釈を付けます。MicroTxライブラリは、注釈を付けたオブジェクトを消費します。- 次の例は、MongoDBリソースの実装例を示しています。業務要件に基づいてアプリケーションのコードを作成します。この例で、 - NonXaResourceFactoryクラスが- NonXAResourceを提供します。非XAリソースを生成し、MicroTxライブラリが非XAリソースを消費します。- package com.oracle.mtm.sample.nonxa; import oracle.tmm.jta.nonxa.NonXAResource; import oracle.tmm.jta.nonxa.NonXa; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.ws.rs.ext.Provider; import java.util.function.Supplier; @Provider public class NonXaResourceFactory implements Supplier<NonXAResource> { @Autowired(required = false) @Qualifier("NonXA") private NonXAResource trmNonXAInstance; @Produces @NonXa public NonXAResource getNonXAResource() { return nonXAResource; } @Override public NonXAResource get() { return getNonXAResource(); } }
- 変更内容を保存します。
MicroTxライブラリおよびXAトランザクション・プロトコルを使用するサンプルSpring RESTトランザクション参加側アプリケーションのソース・コードは、microtx-samples GitHubリポジトリにあるdepartment-spring-nonxa-mongoフォルダにあります。これは、MicroTxライブラリとアプリケーションの統合時に参照として使用できます。