12.5.2. JTA トランザクションのライフサイクル
リソースがトランザクションへの参加を要求すると、一連のイベントが開始されます。Transaction Manager は、アプリケーションサーバー内に存在するプロセスであり、トランザクションを管理します。トランザクションの参加者は、トランザクションに参加するオブジェクトです。リソースは、データソース、JMS 接続ファクトリー、または他の JCA 接続です。
アプリケーションは新しいトランザクションを開始します。
トランザクションを開始するために、アプリケーションは JNDI から (EJB の場合はアノテーションから)UserTransaction
クラスのインスタンスを取得します。UserTransaction
インターフェースには、トップレベルのトランザクションを開始、コミット、およびロールバックするメソッドが含まれています。新規作成されたトランザクションは、そのトランザクションを呼び出すスレッドと自動的に関連付けされます。ネストされたトランザクションは JTA ではサポートされないため、すべてのトランザクションがトップレベルのトランザクションとなります。UserTransaction
を呼び出します。begin()
アノテーションを使用すると、EJB メソッドが呼び出されたときにトランザクションが開始されます (TransactionAttribute ルールによって駆動されます)。この時点以降に使用されたリソースは、このトランザクションと関連付けられます。2 つ以上のリソースが登録された場合、トランザクションは XA トランザクションになり、コミット時に 2 フェーズコミットプロトコルに参加します。注記UserTransaction
オブジェクトは、BMT トランザクションにのみ使用されます。CMT では、UserTransaction オブジェクトは許可されていません。アプリケーションが状態を変更します。
次のステップでは、アプリケーションがその作業を実行し、その状態を変更します。アプリケーションはコミットまたはロールバックの実行を決定します。
アプリケーションの状態の変更が完了すると、アプリケーションはコミットするか、またはロールバックするかを決定します。UserTransaction
のいずれかの適切なメソッドを呼び出します。commit()
またはUserTransaction
。rollback()
。トランザクションマネージャーは、そのレコードからトランザクションを削除します。
コミットまたはロールバックが完了すると、トランザクションマネージャーはレコードをクリーンアップし、トランザクションに関する情報をトランザクションログから削除します。
障害回復
障害回復は自動的に行われます。リソース、トランザクションの参加者、またはアプリケーションサーバーが使用できなくなった場合は、障害が解決され、リソースが再度使用できるようになったときにトランザクションマネージャーがリカバリーを実行します。