- 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ライブラリとアプリケーションの統合時に参照として使用できます。