4.6.1.4. Terminatorインタフェース

Terminatorインタフェースは、トランザクションをコミットまたはロールバックする場合に使用するオブジェクトインタフェースです。一般的には、これらのオペレーションはトランザクション生成者が利用することになります。中継トランザクションからは利用できません。

CosTransactions::Terminatorクラスには次のメソッドがあります。

commit トランザクションのコミットを実施する
rollback トランザクションのロールバックを実施する

   
4.6.1.4.1. commit

名称 commit - トランザクションのコミットを実施する
形式
 #include "CosTransactions.h"
void CosTransactions::Terminator::commit( CORBA::Boolean report_heuristics, CORBA::Environment& env = Ob_default_environment() );
説明 トランザクションのコミット処理を開始します。
登録されているリソースや中継リソースでロールバックオンリーのマーク付けが実施されていない場合は正常にコミット処理が実施されます。そうでない場合はトランザクションのロールバック処理を実施し、CORBA標準例外であるCORBA::TRANSACTION_ROLLEDBACKをthrowします。

このメソッドを呼び出すのに使用したTerminatorオブジェクトが関連付けられているトランザクションの子となる、サブトランザクションを生成しており、かつそれらがコミットあるいはロールバックを実施していない場合は、WebOTX Transaction Service側で自動的にそのサブトランザクションのロールバックを実行します。さらにその後、このトランザクションもロールバックします。

またサブトランザクションに関連するTerminatorオブジェクトを使用してこのメソッドを呼び出した場合は、サブトランザクションのコミットを実施します。それが正常に終了した場合、このサブトランザクション自身は消滅はせずに親トランザクションからのコミットあるいはロールバックを待ち合わせます。詳細はCosTransactions::SubtransactionAwareResource::commit_subtransactionを参照してください。

親トランザクションからコミット要求がきた場合に、サブトランザクションに登録されたリソースオブジェクトに対してコミット処理が実施されることになります。

引数にCORBA_TRUEを指定した場合は、トランザクションのコミット処理が完了するまでメソッドは終了しません。結果としてトランザクションがヒューリスティック状態になった場合は、メソッドの戻りで例外を通知します。CORBA_FALSEを指定した場合、このメソッドは即座に応答を返します。ヒューリスティック状態になった場合でも、例外は返却しません。WebOTX Transaction Serviceではイベントサービスを使った非同期応答はサポートしておりせん。
戻り値 ありません。
エラー CORBA標準例外または次の例外がthrowされます。

CosTransactions::HeuristicMixed トランザクションに登録されたResourceオブジェクトのうち、コミットしたものとロールバックしたものが混在しています。
CosTransactions::HeuristicHazard トランザクションに登録されたResourceオブジェクトのprepare、あるいはcommitの結果、状態が不明になりました。
関連項目

   
4.6.1.4.2. rollback

名称 rollback - トランザクションのロールバックを実施する
形式
 #include "CosTransactions.h"
void CosTransactions::Terminator::rollback( CORBA::Environment& env = Ob_default_environment() );
説明 トランザクションのロールバック処理を開始します。
このとき登録されたリソースオブジェクトに対するすべての変更がロールバックされることになります。
サブトランザクションに関連するTerminatorオブジェクトを使用してこのメソッドを呼び出した場合は、サブトランザクションのロールバックを実施します。正常に終了した場合は、このサブトランザクションに登録されているリソースオブジェクトに対してロールバック要求を出し、それが完了した後にこのサブトランザクション自身は消滅します。
戻り値 ありません。
エラー CORBA標準例外throwされます。
関連項目