3.1.3 オブジェクトトランザクションサービス
TPBrokerは,OMGのOTS機能を提供しています。CORBAで規定されたOTSの仕様を実装していますが,他社OTS製品との接続はサポートしていません。
オブジェクトトランザクションは,TPBrokerが提供するオブジェクトと,リソースベンダまたはユーザが実装するオブジェクトに分けられます。
(1) TPBrokerが提供するオブジェクトインタフェース
(a) Control
Controlは,プログラムがトランザクションコンテキストを明示的に管理したり,プロパゲーションしたりするためのインタフェースです。TerminatorとCoordinatorを得るためのオペレーションを提供します。このインタフェースをサポートしているオブジェクトは,トランザクションごとに存在します。
(b) Coordinator
Coordinatorは,明示的にまたは暗黙的に(リクエストとともにトランザクションコンテキストをプロパゲーションすると)リカバラブルサーバを利用できるようにします。
Coordinatorは,トランザクションごとに存在し,そのトランザクションに対するトランザクション情報の取得,サブトランザクションの生成,およびリソースの登録など,各種オペレーションを提供します。
(c) Current
Currentは,トランザクションの開始・終了と現在のトランザクションの情報を取得します。プロセスごとに存在します。
プロセス中の各スレッドに対応したトランザクションコンテキストを保持し,動作中のスレッドに対応したトランザクションコンテキストによって制御されます。アプリケーションプログラムは,このCurrentが提供するオペレーションによってコンテキストの管理操作ができます。
コーディングを単純化するために,ほとんどのアプリケーションプログラムは,暗黙的なスレッドごとに,トランザクションコンテキストへのアクセスを提供するCurrentオブジェクトを使用します。
(d) RecoveryCoordinator
RecoveryCoordinatorは,register_resourceオペレーションで登録されたResourceオブジェクトに対して,障害時の回復用のオペレーションを提供します。トランザクションごとに存在します。
(2) リソースベンダまたはユーザが実装するオブジェクトインタフェース
(a) Resource
Resourceは,登録されたリソース上でトランザクションサービスによって起動されるオペレーションを提供します。Resourceはある障害が発生したときに,トランザクションの結果を判断するため,およびトランザクションサービスと回復処理を協調させるためにRecoveryCoordinatorを使用します。
(b) SubtransactionAwareResource
SubtransactionAwareResourceは,Resourceインタフェースに加えて,サブトランザクションの完了の通知を受けるためのインタフェースです。Coordinatorのregister_subtran_awareオペレーションでサブトランザクションに対して登録できます。ただし,この登録はサブトランザクションの完了の通知を受けられるだけです。トップトランザクションの完了処理に参加する場合は,別途Coordinatorのregister_resourceオペレーションでトップトランザクションに対して登録する必要があります。
(c) Synchronization
Synchronizationは,2相コミットプロトコルの開始前と完了後に通知を受けるためのインタフェースを持ちます。Coordinatorのregister_synchronizationオペレーションでトップトランザクションに対して登録できます。
(d) TransactionalObject
TransactionalObjectは,OTS 1.1との互換性を保つためだけに残されたインタフェースです。OTS 1.3に準拠したアプリケーションプログラムが,OTS 1.1に準拠したアプリケーションプログラムとトランザクション連携する場合にだけ必要となります。
OTS 1.1に準拠したアプリケーションプログラムと連携する場合,TransactionalObjectは,このインタフェースを実装したオブジェクトがトランザクショナルであることを示し,そのオブジェクトに対するオペレーション実行時にトランザクションが暗黙的にプロパゲーションされることを意味します。