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

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

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

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

初期化処理部

main(argc,argv)
   int   argc;
   char  *argv[];
   {
                             :
    static CORBA_ORB                 orb;
    static CORBA_BOA                 boa;
    static CORBA_ImplementationDef   impl;
    static FJ_ImplementationRep      impl_rep;
    static CORBA_Environment         env;
    CORBA_Object                     OTSobj;
    Int                              current_argc = argc;
                             :
           /* CORBAサービスの初期化 */
           orb = CORBA_ORB_init(&current_argc, argv, FJ_OM_ORBid, &env);          …(1)
           boa = CORBA_ORB_BOA_init(orb, &current_argc, argv, CORBA_BOA_OAid, &env);
           /* インプリメンテーションリポジトリのOR取得 */
           impl_rep = CORBA_ORB_resolve_initial_references(
                       orb, CORBA_ORB_ObjectId_ImplementationRepository,&env);
           impl = FJ_ImplementationRep_lookup_id(impl_rep, _IMPL_mod_intf, &env);
           ...
           /* サーバがデータベースをアクセスするための初期化  */
           OTSobj = CORBA_ORB_resolve_initial_references(orb,
                     CORBA_ORB_ObjectId_TransactionServerInit, &env);
           OTS_init(OTSobj, orb, _IMPL_mod_intf, &env);                           …(2)
           /* リクエスト受信可能であることをCORBAサービスへ通知 */
           CORBA_BOA_impl_is_ready(boa, impl, &env);                             …(3)
           /* サーバがデータベースをアクセスするための終了処理  */
           OTS_term(OTSobj, &env);                                               …(4)
   }

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

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

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

 サーバがデータベースをアクセスするための初期化を行います。
 OTS_initメソッドのパラメタにはサーバアプリケーションのインプリメンテーションリポジトリIDを指定します。
 OTS_initメソッドはデータベースへのコネクションをオープンします。

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

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


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

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

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

ユーザサービス処理部

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

  mod_intf_methodA(mod_intf obj, 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