7.11.2 トランザクション・イニシエータとしてのJAX-RSアプリケーションの構成
トランザクション・イニシエータ・サービスは、トランザクションを開始します。トランザクション・イニシエータ・サービスは、アプリケーションのビジネス・ロジックに基づいて、トランザクションの開始のみ、またはトランザクションの開始とトランザクションへの参加を行うことができます。
開始する前に、アプリケーションがトランザクションを開始するだけか、トランザクションを開始して参加するのかを確認します。2つのシナリオでは要件が若干異なるため、それに応じてアプリケーションを構成します。
2つのシナリオを検討して、アプリケーションがトランザクションを開始するだけか、トランザクションにも参加するかを理解します。
- シナリオ1: 銀行振込アプリケーションによって、ある部門から別の部門に送金します。この場合、振込アプリケーションはトランザクションを開始するだけで、トランザクションには参加しません。振込アプリケーションは、トランザクションを完了するためにビジネス・ロジックに基づいて様々なサービスをコールします。データベース・インスタンスは、振込アプリケーションにアタッチされる場合とアタッチされない場合があります。
- シナリオ2: 銀行振込アプリケーションによって、ある部門から別の部門に送金します。振込アプリケーションは、トランザクションごとに手数料として1%を請求します。この場合、振込アプリケーションはトランザクションを開始して参加します。データベース・インスタンスは、トランザクション情報を保存するために振込アプリケーションにアタッチされる必要があります。
Javaアプリケーションをトランザクション・イニシエータとして構成するには:
MicroTxライブラリおよびXAを使用するサンプルJAX-RSトランザクション・イニシエータ・アプリケーションのソース・コードは、
microtx-samples
GitHubリポジトリにあるteller
フォルダにあります。これは、MicroTxライブラリとアプリケーションの統合時に参照として使用できます。これは、イニシエータ・アプリケーションのビジネス・ロジックでMicroTxライブラリを使用する方法の例です。このサンプル・アプリケーションは振込(Teller)という名前です。これは2つの部門間のトランザクションを開始します。部門Aをコールして一定金額を引き出し、部門Bをコールして預け入れます。
イニシエータ・サービスが、トランザクションを開始するだけでなくトランザクションに参加する場合、トランザクションに参加してリソース・マネージャと通信するアプリケーションのために追加の構成を行う必要があります。「トランザクション参加側としてのJAX-RSアプリケーションの構成」を参照してください。
microtx-samples
GitHubリポジトリにあるteller-as-participant
フォルダは、トランザクションに参加もするJAX-RSトランザクション・イニシエータ・アプリケーションのソース・コードを提供します。
親トピック: XAでのJAX-RSアプリケーションの開発