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

第5章 サーバアプリケーションの開発(CORBAアプリケーション/C++言語)

5.3 サーバアプリケーションの作成手順

 利用者が使用する初期化処理、ユーザサービス処理部についての基本形を以下に示します。

初期化処理部

static CORBA::ORB_ptr                orb;
static CORBA::BOA_ptr                boa;
static FJ::ImplementationRep_ptr     impl_rep;
static CORBA::ImplementationDef_ptr  impl;
static OTS_ptr                       OTSobj;
static CORBA::Object_ptr             obj;
static CORBA::Environment            env;

main(int argc, char *argv[])
   {
                
                   :
           /* CORBAサービスの初期化 */

           orb = CORBA::ORB_init(argc, argv, FJ_OM_ORBid, env);        …(1)
           boa = orb->BOA_init(argc, argv, CORBA_BOA_OAid, env);
           obj = orb->resolve_initial_references(
               CORBA_ORB_ObjectId_ImplementationRepository, env)
         impl_rep = FJ::ImplementationRep::narrow(obj);
         obj = impl_rep->lookup_id(_IMPL_mod_intf, env);
           impl = CORBA::ImplementationDef::_narrow(obj);

           /* サーバがデータベースをアクセスするための初期化  */
           obj = orb->resolve_initial_references(
                     CORBA_ORB_ObjectId_TransactionServerInit, env);
           OTSobj =OTS::_narrow(obj);
         CORBA::release( obj );
         OTSobj->init(orb, _IMPL_mod_intf, env);                      …(2)

           /* リクエスト受信可能であることをCORBAサービスへ通知 */
           boa->impl_is_ready(impl, env);                             …(3)
           /* サーバがデータベースをアクセスするための終了処理        …(4)
           OTSobj->term(env);
   }

(1)CORBAサービスの初期化

 CORBAサービスを初期化するために以下のメソッドを使用します。

(2)サーバがデータベースをアクセスするための初期化

 サーバがデータベースをアクセスするための初期化を行います。
 OTS::initオペレーションのパラメタにはサーバアプリケーションのインプリメンテーションIDを指定します。
 OTS::initオペレーションはデータベースへのコネクションをオープンします。

(3)リクエストが受信可能であることをCORBAサービスへ通知

 リクエスト受信可能であることをCORBAサービスへ通知します。

 アプリケーションの登録時には、インプリメンテーション情報定義ファイルのmodeにSYNC_ENDを指定する必要があります。SYNC_ENDを指定することによって、アプリケーションが非活性化された場合やアプリケーション停止時まで復帰しないようになります。

(4)サーバがデータベースをアクセスするための終了処理

 サーバがデータベースをアクセスするための終了処理を行います。OTS::termメソッドはデータベースへのコネクションをクローズします。

ユーザサービス処理部

 ユーザサービス処理部には、データベースへの処理を記述します。また、このユーザサービス処理部のインタフェースは、ユーザがIDL定義を行う必要があります。ユーザサービス処理部の記述例を以下に示します。

mod_intf_Impl::methodA(CORBA::long account1, CORBA::long account2, CORBA::Environment &env)
 {

      /* ユーザの操作 */
      SQL  データベースへのアクセス
      .................
  }

 また、IDLファイルの定義例を以下に示します。

module  mod {
       interface  intf {
            void  methodA(in long account1,
                          out long account2);
       };
};

注意

サーバアプリケーションが異常を検出した場合

 サーバアプリケーションが以下のようなエラーを検出した場合、エラーをクライアントアプリケーションに通知する必要があります。

 エラーが通知されたクライアントアプリケーションでは、rollbackを発行してトランザクションを終了させてください。


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

Copyright 2008 FUJITSU LIMITED