Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編)
目次 索引 前ページ次ページ

第3章 クライアントアプリケーションの作成> 3.2 クライアントアプリケーションソースの作成(C++言語)> 3.2.2 ソースの作成

3.2.2.1 アプリケーションの構成

 グローバルトランザクション運用を行うためには、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メソッドでトランザクションをロールバックさせます。

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED