ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(データベース連携サービス編)
Interstage

3.6 クライアントアプリケーションの構成

グローバルトランザクション運用を行うためには、CORBAのクライアントアプリケーションの処理に加えて、CosTransactions::Current::commitメソッドなどのCurrentインタフェースを呼び出して、データベース連携サービスにトランザクション処理を依頼します。
これらの処理を考慮したクライアントアプリケーションの構成について以下に示します。



■初期化処理部

クライアントアプリケーションをCORBAサービスに登録、およびトランザクションサービスの初期化を行います。


■アプリケーション固有部

アプリケーション固有の処理部です。トランザクションの開始から終了までの流れを記述します。


■トランザクション用ライブラリ

データベース連携サービスが提供するクライアントアプリケーション用ライブラリです。


クライアントアプリケーションの基本形を以下に示します。

                         :
static  CORBA::ORB_ptr               orb;
static  CosTransactions::Current_ptr Current;
static  CosNaming::NamingContext_ptr obj;
static  CosNaming::NamingContext_ptr naming_obj;
                         :
/* 初期化処理  */
orb = CORBA::ORB_init(argc, argv, FJ_OM_ORBid, *env);
                        :
naming_obj = NamingContext_obj->resolve(*name, *env);     … (1)
                        :
/* トランザクション依頼処理 */
obj = orb->resolve_initial_references
     (CORBA_ORB_ObjectId_TransactionCurrent, *env);       … (2)
Current = CosTransactions::Current::narrow(obj);
Current->begin(*env);                                     … (3)
                        :
srvobj->ope1(para, *env                                   … (4)
                        :
if (env->exception())                                     … (5)
    Current->rollback(*env);
else
    Current->commit(CORBA_TRUE, *env);

  1. ネーミングサービスからサーバアプリケーションのオブジェクトリファレンスを獲得します。

  2. Currentインタフェースのオブジェクトリファレンスを獲得します。

  3. CosTransactions::Current::beginメソッドでトランザクションの開始を宣言します。

  4. サーバアプリケーションを呼び出します。

  5. サーバアプリケーションの復帰状態を確認して、トランザクションの状態を決定します。
    トランザクションを正常終了する場合は、CosTransactions::Current::commitメソッドでトランザクションをコミットします。
    トランザクションを異常終了する場合は、CosTransactions::Current::rollbackメソッドでトランザクションをロールバックします。