トランザクションは、すべて正常に完了することが必要なアプリケーションで、周到に用意された一連のアクションです。正常に完了しない場合、各アクションで行われたすべての変更が取り消されます。たとえば、当座預金から普通預金に資金を移動するのは次の手順を実行するトランザクションになります。
当座預金口座にその移動をカバーするだけの金額があるかどうかを確認します。
当座預金に十分なお金が入っている場合は、当座預金の金額を借り方に記帳します。
その金額を普通預金口座の貸し方に記帳します。
その移動を当座預金口座ログに記録します。
その移動を普通預金口座ログに記録します。
これらの手順のいずれが失敗すると、先行する手順によって行われた変更がすべて取り消されます。当座預金口座と普通預金口座はこのトランザクションが始まる前と同じ状態になる必要があります。このイベントは「ロールバック」と呼ばれます。すべての手順が正常に完了すると、トランザクションは「コミット」状態になります。 トランザクションはコミットかロールバックのどちらかで終了します。
J2EE テクノロジのトランザクション処理には、次の 5 つの関係要素が含まれます。
これらの各エンティティーは、次に説明する API や機能を実装することにより、信頼性のあるトランザクション処理を実現しています。
トランザクションマネージャーは、トランザクション境界、トランザクションリソース管理、同期化、およびトランザクションコンテキスト伝達のサポートに必要なサービスと管理機能を提供します。
Application Server は、トランザクション状態管理を含むアプリケーションランタイム環境のサポートに必要なインフラストラクチャーを提供します。
リソースマネージャーは、リソースアダプタを介して、リソースへのアプリケーションアクセスを提供します。リソースマネージャーは、特定のトランザクションリソースインタフェースを実装することで分散トランザクションに参加します。このインタフェースは、トランザクションマネージャーがトランザクションの関連付け、トランザクションの完了、および回復作業を伝達する際に使用されます。このようなリソースマネージャーの例としては、リレーショナルデータベースサーバーがあります。
リソースアダプタはシステムレベルのソフトウェアライブラリで、リソースマネージャーへ接続するためにアプリケーションサーバーまたはクライアントが使用します。通常、リソースアダプタはリソースマネージャーに固有です。リソースアダプタはライブラリとして使用可能で、クライアントのアドレス空間内で使用されます。そのようなリソースアダプタの一例として、JDBC ドライバが挙げられます。
アプリケーションサーバー環境で動作するように開発されたトランザクションユーザーアプリケーションは、JNDI を使用してトランザクションデータソースおよびトランザクションマネージャー (オプション) を検索します。アプリケーションは、エンタープライズ Bean 用の宣言的なトランザクション属性設定や、プログラムによる明示的なトランザクション境界を使用することがあります。