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

第5章 アプリケーションの開発(C++言語)> 5.2 サーバアプリケーションのプログラミング(Basic Object Adapter:BOA)> 5.2.1 静的スケルトンインタフェース

5.2.1.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_ObjectId_ImplementationRepositoryを指定します。

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

 FJ::ImplementationRep::lookup_id()を使用して、ImplementationDepオブジェクトのオブジェクトリファレンスを求めます。パラメタには、サーバアプリケーションの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を呼び出す必要があります。

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

  CORBA::ImplementationDef_ptr impl;     // インプリメンテーション情報検索用
  ImplementationRep_ptr        impl_rep; // ImplementationRepオブジェクトリファレンス
  CORBA::Object_ptr            o;        // オブジェクトリファレンスのポインタ

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

  // ImplementationRepクラスへの変換
  impl_rep = FJ::ImplementationRep::_narrow(o); 

  // サーバのImplementationRepオブジェクトの検索
  o = impl_rep->lookup_id( _IMPL_ODdemo_calculator, env );

  // ImplementationRepクラスへの変換
  impl = CORBA::ImplementationDef::_narrow(o); 

  // サーバの活性化
  boa->impl_is_ready( impl, env );

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

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