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

第4章 アプリケーションの開発(C言語)> 4.4 サーバアプリケーションのプログラミング(静的スケルトンインタフェース)

4.4.2 サーバの活性化

 サーバアプリケーションの初期化が完了すると、ORBに対してその旨を通知します。ORBは、この命令が発行された時点で、クライアントからの要求をサーバアプリケーションに伝えます。活性化の方法は、サーバのタイプによって以下のように異なります。

サーバのタイプ

メソッド

shared server

CORBA_BOA_impl_is_ready

unshared server

CORBA_BOA_obj_is_ready

persistent server

CORBA_BOA_impl_is_ready

(1)インプリメンテーションリポジトリのオブジェクトリファレンスの獲得

 CORBA_ORB_resolve_initial_references()を使用して、インプリメンテーションリポジトリのオブジェクトリファレンスを獲得します。第2パラメタには、CORBA_ORB_ObjectId_ImplementationRepositoryを指定します。

(2) ImplementationDefオブジェクトのオブジェクトリファレンスの検索

 FJ_ImplementationRep_lookup_id()を使用して、ImplementationDefオブジェクトのオブジェクトリファレンスを求めます。第1パラメタには、サーバアプリケーションのFJ_ImplementationRepオブジェクトを指定します。

(3) サーバの活性化

 CORBA_BOA_impl_is_ready()またはCORBA_BOA_obj_is_ready()を使用して、サーバの活性化を行います。

 サーバアプリケーションはプロセスで実装するかスレッドで実装するかにより、メソッドの動作が異なります。また、スレッドで実装する場合、インプリメンテーションリポジトリ内に設定されている情報によっても異なります。動作の違いを以下に示します。

条件

動作

プロセスで実装

OD_impl_instでmode=SYNC_END

メソッドは即時に復帰せず、このオブジェクトの停止がオペレータにより指示されたときに復帰します。(注)

スレッドで実装

OD_impl_instでmode=SYNC_END

同上

OD_impl_instでmode=COMPATIBLE

メソッドは即時に復帰します。
その後、thr_exitを呼び出す必要があります。

注) メソッドの復帰後は、初期化時にオープンしたファイルのクローズ処理や、領域の解放処理などの非活性化処理(“サーバの非活性化”を参照)が必要です。

下の例で使用されている“_IMPL_ODdemo_calculator”はIDLコンパイラによって生成されたヘッダファイルに定義されている“_IMPL_”で始まる文字列です。例ではヘッダファイルに定義されている文字列を使用していますが、活性化対象のインプリメンテーションリポジトリIDを指定する必要があります。

  CORBA_ImplementationDef  impl;       /* ImplementationDefオブジェクトリファレンス */
  FJ_ImplementationRep     impl_rep;   /* ImplementationRepオブジェクトリファレンス */

  /* インプリメンテーション情報のオブジェクトリファレンス検索 */
  impl_rep = CORBA_ORB_resolve_initial_references(
      orb,    
      CORBA_ORB_ObjectId_ImplementationRepository, 
      &env); 

  /* ImplementationRepオブジェクトリファレンス検索 */
  impl = FJ_ImplementationRep_lookup_id(
      impl_rep, 
      _IMPL_ODdemo_calculator,         /*リポジトリID */
      &env ); 

  /* サーバの活性化 */
  CORBA_BOA_impl_is_ready(boa, impl, &env );

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

All Rights Reserved, Copyright(C) 富士通株式会社 2005