Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第4章 アプリケーションの開発(C言語) | > 4.4 サーバアプリケーションのプログラミング(静的スケルトンインタフェース) |
サーバアプリケーションの初期化が完了すると、ORBに対してその旨を通知します。ORBは、この命令が発行された時点で、クライアントからの要求をサーバアプリケーションに伝えます。活性化の方法は、サーバのタイプによって以下のように異なります。
サーバのタイプ |
メソッド |
shared server |
CORBA_BOA_impl_is_ready |
unshared server |
CORBA_BOA_obj_is_ready |
persistent server |
CORBA_BOA_impl_is_ready |
CORBA_ORB_resolve_initial_references()を使用して、インプリメンテーションリポジトリのオブジェクトリファレンスを獲得します。パラメタには、CORBA_ORB_ObjectId_ImplementationRepositoryを指定します。
FJ_ImplementationRep_lookup_id()を使用して、ImplementationDefオブジェクトのオブジェクトリファレンスを求めます。第1パラメタには、サーバアプリケーションのFJ_ImplementationRepオブジェクトを指定します。
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 |
メソッドは即時に復帰します。 |
注) メソッドの復帰後は、初期化時にオープンしたファイルのクローズ処理や、領域の解放処理などの非活性化処理(“サーバの非活性化”を参照)が必要です。
下の例で使用されている“_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 );
目次
索引
![]() ![]() |