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

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

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



■初期化処理部

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


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

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


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

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


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

MAIN.
* 初期化処理
        :
     CALL "CORBA-ORB-INIT" USING
        CURRENT-ARG-C
        CURRENT-ARG-V
        TRANSACTIONCURRENTID
        ENV
        ORB.
        :
* サーバアプリケーションのオブジェクトリファレンス獲得
     CALL "COSNAMING-NAMINGCONTEXT-RESOLVE" USING              … (1)
        COS-NAMING
        NAME
        ENV
        OBJ.
        :
* トランザクション依頼処理
      MOVE FUNCTION LENG (CORBA-ORB-OBJECTID-TRANCURRENT) TO STRING-LENGTH.
      CALL  "CORBA-STRING-SET" USING
         TRANSACTIONCURRENTID
         STRING-LENGTH
         CORBA-ORB-OBJECTID-TRANCURRENT.
      CALL  "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING       … (2)
         ORB
         TRANSACTIONCURRENTID
         ENV
         TRANCURRENTOBJ.

* トランザクション開始
      CALL  "COSTRANSACTIONS-CURRENT-BEGIN" USING              … (3)
         TRANCURRENTOBJ
         ENV.
* サーバアプリケーションのメソッド呼出し
          :
      CALL  "MOD-INTF-OPE1"  USING                             … (4)
         OBJ
         PARA
         ENV.
         :

* トランザクション完了処理
      EVALUATE TRUE
      WHEN CORBA-NO-EXCEPTION OF MAJOR OF ENV
      CALL "COSTRANSACTION-CURRENT-COMMIT" USING               … (5)
          TRANCURRENTOBJ
          CORBA-TRUE
          ENV.
      WHEN CORBA-SYSTEM-EXCEPTION OF MAJOR OF ENV
      CALL "COSTRANSACTION-CURRENT-ROLLBACK" USING             
          TRANCURRENTOBJ
          ENV.

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

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

  3. COSTRANSACTIONS-CURRENT-BEGINメソッドでトランザクションの開始を宣言します。

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

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