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

2.2.2 ソースプログラムの作成

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


初期化処理部

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サービスを初期化するために、以下のメソッドを使用します。

  • CORBA_ORB_init()

  • CORBA_ORB_BOA_init()


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

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


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

リクエスト受信可能であることを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を発行してトランザクションを終了してください。