9.6.1 トランザクション・イニシエータとしてのJAX-RSアプリケーションの構成

開始する前に、MicroTxライブラリのプロパティ値を構成していることを確認してください。

  1. MicroTx Javaライブラリ・ファイルをアプリケーションのpom.xmlファイルにmaven依存関係として含めます。次のサンプル・コードは24.4リリース用です。使用するリリース・バージョンに基づいて、正しいバージョンを指定してください。
    • Helidon 2.xなどのJakarta EE8環境では、TmmLibファイルを使用します。

      <dependency>
           <groupId>com.oracle.tmm.jta</groupId>
           <artifactId>TmmLib</artifactId>
           <version>24.4</version>
      </dependency>
    • Helidon 3.xアプリケーションなどのJakarta EE9環境では、TmmLib-jakartaファイルを使用します。

      <dependency>
           <groupId>com.oracle.tmm.jta</groupId>
           <artifactId>TmmLib-jakarta</artifactId>
           <version>24.4</version>
      </dependency>
  2. 次のパッケージをインポートします。
    import oracle.tmm.tcc.TccClientService;
    import oracle.tmm.tcc.TccParticipantStatus;
    import oracle.tmm.tcc.TccParticipantStatus;
    import oracle.tmm.tcc.exception.TccException;
    import oracle.tmm.tcc.exception.TccHeuristicException;
    import oracle.tmm.tcc.exception.TccUnknownTransactionException;
    import oracle.tmm.tcc.vo.CancelResponse;
    import oracle.tmm.tcc.vo.ConfirmResponse;
    import oracle.tmm.tcc.vo.TccParticipant;
  3. イニシエータ・アプリケーション・リソース・クラスの前に@TCC注釈を追加します。これにより、新しいTCCトランザクションが開始され、トランザクション・イニシエータからのすべての送信REST APIリクエストにヘッダーが追加されます。

    次のコードを使用して、トランザクション・イニシエータ・サービスに対してコールが行われたときに新しいTCCトランザクションを開始します。次の例では、サービスを開始するコードがクラスmyTransactionInitiatorAppに含まれています。ご自身の環境に基づいてクラス名を置き換えます。

    @TCC(timeLimit = 120, timeUnit = ChronoUnit.SECONDS)  //Add @TCC annotation before the initiator application resource class to start a TCC transaction
    public class myTransactionInitiatorApp {
        // Service code that is specific to the transaction initiator service.
    }

    @TCC注釈を使用して、次のオプション・パラメータを指定できます。

    • timeLimit: トランザクション・イニシエータ・サービスでリソースを予約する期間を整数で指定します。期限切れになった後でリソースを解放してTCCトランザクションのその部分を取り消すために必要なコードを用意するのは、アプリケーション開発者の責任です。業務要件に基づいて期限を決めてください。
    • timeUnit: 指定する期限の単位(ChronoUnit.SECONDSChronoUnit.MINUTESなど)を指定します。指定できる値は、java.time.temporal.ChronoUnitクラスのすべての列挙値です。https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.htmlを参照してください。
MicroTxライブラリを使用するサンプルJAX-RSトランザクション・イニシエータ・アプリケーションのソース・コードは、microtx-samples GitHubリポジトリにあるBookingResource.javaファイルにあります。これは、MicroTxライブラリとアプリケーションの統合時に参照として使用できます。