作成したサーバアプリケーションを他のアプリケーションからオブジェクトとしてアクセスできるようにするために、そのオブジェクトを識別するためのオブジェクトリファレンスを作成します。同時に作成したオブジェクトリファレンスをネーミングサービスに登録します。オブジェクトを作成する方法として以下の方法があります。
OD_or_admコマンドを用います。
サーバアプリケーションでBOAの機能を使用してオブジェクトリファレンスを作成し、ネーミングサービスに登録します。
■ OD_or_admコマンドを使用する方法
OD_or_admコマンドは、オブジェクトリファレンス作成後、ネーミングサービスに登録します。OD_or_admコマンドでの登録例と指定する情報を以下に示します。
![]()
ネーミングサービスへの登録
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L SJIS -n ODdemo::calculator |
指定されたインタフェースリポジトリIDでオブジェクトリファレンスを登録します。
ネーミングサービスに登録するオブジェクトに対してコード系を設定します。
ネーミングサービスに登録するオブジェクト名を指定します。
![]()
![]()
ネーミングサービスへの登録
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L EUC -n ODdemo::calculator |
指定されたインタフェースリポジトリIDでオブジェクトリファレンスを登録します。
ネーミングサービスに登録するオブジェクトに対してコード系を設定します。
ネーミングサービスに登録するオブジェクト名を指定します。
■ サーバアプリケーションで作成する方法
以下の流れで処理を行います。

以下にプログラミングの例を示します。
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コマンドで行います。