Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第4章 アプリケーションの開発(C言語) | > 4.7 サーバアプリケーションの登録 |
作成したサーバアプリケーションを他のアプリケーションからオブジェクトとしてアクセスできるようにするために、そのオブジェクトを識別するためのオブジェクトリファレンスを作成します。同時に作成したオブジェクトリファレンスをネーミングサービスに登録します。オブジェクトを作成する方法として以下の方法があります。
OD_or_admコマンドは、オブジェクトリファレンス作成後、ネーミングサービスに登録します。OD_or_admコマンドでの登録例と指定する情報を以下に示します。
ネーミングサービスへの登録
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L SJIS -n ODdemo::calculator |
ネーミングサービスへの登録
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L EUC -n ODdemo::calculator |
以下の流れで処理を行います。
以下にプログラミングの例を示します。
CORBA_ORB orb; /* ORB_initで取得したObject */ CORBA_BOA boa; /* ORB_BOA_initで取得したObject */ CORBA_Repository intf_rep; /* インタフェースリポジトリの オブジェクトリファレンス */ CORBA_InterfaceDef intf; /* インタフェースリポジトリのInterfaceDef */ FJ_ImplementationRep impl_rep; /* インプリメンテーションリポジトリの オブジェクトリファレンス */ CORBA_ImplementationDef impl; /* インプリメンテーションリポジトリの ImplementationDef */ CORBA_Object new_obj; /* 作成したオブジェクトリファレンス */ CORBA_ReferenceData id; /* ReferenceData格納域 */ CosNaming_NamingContext cos_naming; /* NamingServiceのオブジェクトリファレンス */ CosNaming_Name name; /* 検索した情報格納域 */ CORBA_Environment env; /* 例外情報 */ /* ObjectDirectorの初期化(省略) */ : /* ReferenceDataの初期化 */ id._length = 0; id._maximum = 0; id._buffer = NULL; /* インタフェースリポジトリのオブジェクトリファレンスの獲得 */ intf_rep = CORBA_ORB_resolve_initial_references( orb, CORBA_ORB_ObjectId_LightInterfaceRepository, &env ); /* InterfaceDefオブジェクトのオブジェクトリファレンスの獲得 */ intf = CORBA_Repository_lookup_id( intf_rep, "...", /* インタフェースリポジトリID */ &env ); /* インプリメンテーションリポジトリのオブジェクトリファレンスの獲得 */ impl_rep = CORBA_ORB_resolve_initial_references( orb, CORBA_ORB_ObjectId_ImplementationRepository, &env ); /* ImplementationDefオブジェクトのオブジェクトリファレンスの獲得 */ impl = FJ_ImplementationRep_lookup_id( impl_rep, "...", /* インプリメンテーションリポジトリID */ &env ); /* オブジェクトリファレンスの作成 */ new_obj = CORBA_BOA_create( boa, &id, intf, impl, &env ); /* NamingServiceのリファレンスを獲得 */ cos_naming = CORBA_ORB_resolve_initial_references( orb, CORBA_ORB_ObjectId_NameService, &env); name._length = name._maximum = 1; /* オブジェクト名の数 */ name._buffer = &name_component; /* オブジェクト名格納域 */ name_component.id = "ODdemo::calculator"; /* オブジェクト名 */ name_component.kind = ""; /* オブジェクトのタイプ */ /* ネーミングサービスへの登録 */ CosNaming_NamingContext_bind (cos_naming, &name, new_obj, &env );
注) CORBA_BOA_create()呼出し時にインプリメンテーションリポジトリに定義されているデフォルトコード系でオブジェクトリファレンスを作成します。デフォルトコード系の設定はOD_impl_instまたはOD_set_envコマンドで行います。
目次
索引
![]() ![]() |