Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第5章 アプリケーションの開発(C++言語) | > 5.1 クライアントアプリケーションのプログラミング | > 5.1.2 動的起動インタフェース |
インタフェースリポジトリには、IDLで定義されたモジュール名、インタフェース名、オペレーション名およびパラメタが階層構造で格納されます。サーバアプリケーションの情報を獲得するため、以下の手順で検索を行います。
インタフェースリポジトリからサーバアプリケーションの情報を獲得するためには、InterfaceDefオブジェクトのオブジェクトリファレンスが必要です。そのため、サーバアプリケーションのオブジェクト名をパラメタとして、ネーミングサービスからサーバアプリケーションのオブジェクトリファレンスを求め、その後、CORBA::Object::_get_interface()により、InterfaceDefオブジェクトリファレンスを獲得します。
// InterfaceDefオブジェクトリファレンス取得 CORBA::InterfaceDef_ptr intf = obj->_get_interface( env );
CORBA::InterfaceDef::lookup_name()により、インタフェースリポジトリから指定されたメソッドを検索します。パラメタとしてサーバアプリケーションのメソッド名を指定します。結果として、指定したメソッド情報が格納されたOperationDefオブジェクトのオブジェクトリファレンスが返されます。
// メソッドのOperationDefオブジェクトリファレンス取得 CORBA::ContainedSeq_ptr intf_opr = intf->lookup_name( "calculate", // メソッド名 -1, CORBA::dk_Operation, // Operation情報の取得 CORBA_FALSE, env ); // OperationDefクラスへの変換 CORBA::OperationDef_ptr OperationDef_obj = CORBA::OperationDef::_narrow((*intf_opr)[0]);
CORBA::OperationDef::describe()により、サーバアプリケーションがもっているメソッドのパラメタの情報(パラメタの名前、個数、パラメタの型等)をインタフェースリポジトリから検索します。パラメタとして、OperationDefオブジェクトリファレンスを指定します。
// 指定されたメソッドのパラメタ情報を検索 CORBA::Contained::Description *description = OperationDef_obj->describe( env );
目次
索引
![]() ![]() |