2.5. リソースの登録
データベース接続などのトランザクションリソースは通常、リソースアダプタやアプリケーションサーバー、さらにオプションで接続プール最適化により管理されています。外部のトランザクションマネージャがリソースマネージャが実行するトランザクショナルな作業を調整できるように、アプリケーションサーバーはトランザクションで利用されるリソースを登録および登録解除する必要があります。これらのリソース (参加者) は、トランザクションの終了時に通知されるように、トランザクションに登録されます。
前述したように、JTAは任意のオブジェクトよりもXA のリソースコンセプトと密統合されています。アプリケーションにより利用中のリソースに対し、アプリケーションサーバーは使用中のリソースを特定する
XAResource
オブジェクトと合わせ、enlistResource
メソッドを呼び出します。XAResource
の実装が障害発生時のリカバリにどのように影響をあたえるかについては、別セクションにて説明しています。
登録リクエストにより、トランザクションマネージャはリソースマネージャにトランザクションと該当リソースで実行される作業の関連付けを開始するよう通知します。トランザクションマネージャは、リソースマネージャへの
XAResource.start
メソッド呼出しにて適切なフラグを渡します。
delistResource
メソッドを使い、対象オブジェクトのトランザクションコンテキストから指定のリソースとの関連付けを解除します。アプリケーションサーバーはこのメソッドを2つのパラメータで呼び出します。
- リソースを示す
XAResources
オブジェクト - オペレーションの原因が停止されたトランザクション (
TMSUSPEND
)であるか、作業の一部が失敗したのか(TMFAIL
)、アプリケーションにより通常のリソースがリリースされたのかを示すフラグ
リストから解除するリクエストを出すと、トランザクションマネージャはリソースマネージャにトランザクションと対象の
XAResource
との関連付けを終了するように通知します。フラグの値により、アプリケーションサーバーが同じリソースに戻り、リソースの状態をそのまま保つ予定かを示すことができます。トランザクションマネージャは、基盤リソースマネージャへのXAResource.end
メソッドコールにて適切なフラグ値を渡します。