| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 第5章 アプリケーションの開発(C++言語) | > 5.4 サーバアプリケーションの登録 |
作成したサーバアプリケーションを他のアプリケーションからオブジェクトとしてアクセスできるようにするために、そのオブジェクトを識別するためのオブジェクトリファレンスを作成します。同時に作成したオブジェクトリファレンスをネーミングサービスに登録します。
オブジェクトを作成する方法として以下の方法があります。
注)POAを使用してサーバアプリケーションを作成する場合は、環境設定を行う必要があります。詳細については、“POA使用方法例”を参照してください。
OD_or_admコマンドは、オブジェクトリファレンス作成後、ネーミングサービスに登録します。OD_or_admコマンドでの登録例と指定する情報を以下に示します。

ネーミングサービスへの登録
|
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L EUC -n ODdemo::calculator |

ネーミングサービスへの登録
|
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L SJIS -n ODdemo::calculator |


以下の流れで処理を行います。

以下にプログラミングの例を示します。
CORBA::ORB_ptr orb; // ORB_initで取得したObject
CORBA::BOA_ptr boa; // ORB::BOA__initで取得したObject
CORBA::Repository_ptr intf_rep;
// インタフェースリポジトリのオブジェクトリファレンス
CORBA::InterfaceDef_ptr intf; // インタフェースリポジトリのInterfaceDef
FJ::ImplementationRep_ptr impl_rep;
// インプリメンテーションリポジトリのオブジェクトリファレンス
CORBA::ImplementationDef_ptr impl;
// インプリメンテーションリポジトリのImplementationDef
CORBA::Object_ptr new_obj; // 作成したオブジェクトリファレンス
CORBA::ReferenceData id; // ReferenceData格納域
CORBA_Environment *env = new CORBA::Environment();
// 例外情報
// ObjectDirectorの初期化(省略)
:
// インタフェースリポジトリのオブジェクトリファレンスの獲得
intf_rep = orb->resolve_initial_references(
CORBA_ORB_ObjectId_LightInterfaceRepository,
*env );
// InterfaceDefオブジェクトのオブジェクトリファレンスの獲得
intf = intf_rep->lookup_id(
"...", // インタフェースリポジトリID
&env );
// インプリメンテーションリポジトリのオブジェクトリファレンスの獲得
impl_rep = orb->resolve_initial_references(
CORBA_ORB_ObjectId_ImplementationRepository,
*env );
// ImplementationDefオブジェクトのオブジェクトリファレンスの獲得
impl = impl_rep->lookup_id(
"...", // インプリメンテーションリポジトリID
*env );
// オブジェクトリファレンスの作成
new_obj = boa->create( id, intf, impl , *env );
CORBA::Object_ptr obj; // NamingServiceのオブジェクトリファレンス
// NamingServiceのオブジェクトリファレンス獲得
obj = orb->resolve_initial_references( CORBA_ORB_ObjectId_NameService, *env );
// NamingContextクラスへの変換
CosNaming::NamingContext_ptr cos_naming =
CosNaming::NamingContext::_narrow( obj );
CosNaming::Name name; // CosNaming::Nameのインスタンス
// オブジェクト名
name[0]->id = (const CORBA::Char *)"ODdemo::calculator";
// オブジェクトのタイプ
name[0]->kind = (const CORBA::Char *)"";
// サーバアプリケーションのオブジェクトリファレンスを登録
cos_naming-> bind( name, obj, *env );
注) CORBA::BOA::create関数呼出し時にインプリメンテーションリポジトリに定義されているデフォルトコード系でオブジェクトリファレンスを作成します。デフォルトコード系の設定はOD_impl_instまたはOD_set_envコマンドで行います。
目次
索引
![]()
|