Java Transaction APIの概要
JTAの必要性・目的
俗に分散トランザクションと言われる技術分野がある。
国内では金融機関などで古くから使われているが、例えばあるビジネス上のトランザクションをコミットする際、あるデータベースへ書き込みを行うと同時にメッセージキューにもメッセージを送信したい場合がある。
この時システム障害などによって片方だけに記録されるとデータの不整合が発生することとなるので、こういった複数のデータの送信・書き込み先に対して一括してトランザクションを管理する必要性が出てくることとなる。
JTAはJavaにおける分散トランザクション技術の仕様である。
JTAを構成するコンポーネント
- Transaction Manager
- 分散トランザクション全体を管理するコンポーネント。Transaction Managerは"javax.transaction.TransactionManager"インタフェースを実装する。
- Transaction Context
- 任意のトランザクションを一意に識別するためのコンポーネント。"javax.transaction.Transaction"インタフェースを実装する。
- Transaction Client
- ひとつのトランザクションに対してひとつあるいは複数のTransaction Objectを通じて呼び出しを行うコンポーネント。通常のアプリケーションに相当し、特に実装しなければならないJTAのインタフェースは無い。
- Transaction Object
- 処理内容がTransaction Contextによって影響を受けるコンポーネント。Transaction Object自身がTransaction Clientを兼ねる場合もある。ほとんどのEJBはこれに相当する。
- Recoverable Resource
- トランザクションがコミットされた時に状態を保存し、ロールバックされた時に状態を元に戻すコンポーネント。複数のRecoverable Resouceがトランザクションに加わっている場合、コミット時にTransaction ManagerからXAプロトコル(2相コミット)を用いて指示を受けて状態の保存を行えるか一度確認をしてからコミットする。"javax.transaction.xa.XAResouce"インタフェースを実装する。
- 作成しました。 -- ikeda (2005-07-20 09:14:12)