Hitachi

TPBroker Version 5 トランザクショナル分散オブジェクト基盤 TPBroker ユーザーズガイド


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オブジェクトに対して,障害時の回復用のオペレーションを提供します。トランザクションごとに存在します。

(e) Terminator

Terminatorは,トランザクションを終了させるためのオペレーションを提供します。トランザクションオリジネータは,Terminatorインタフェースを使用してトランザクションのコミットおよびロールバックをします。

(f) TransactionFactory

TransactionFactoryは,トップトランザクションを生成するオペレーションを提供します。また,TerminatorやCoordinatorへのアクセスを提供するControlが戻り値として返されます。

(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は,このインタフェースを実装したオブジェクトがトランザクショナルであることを示し,そのオブジェクトに対するオペレーション実行時にトランザクションが暗黙的にプロパゲーションされることを意味します。