Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第5章 アプリケーションの開発(C++言語)> 5.1 クライアントアプリケーションのプログラミング> 5.1.2 動的起動インタフェース

5.1.2.4 インタフェースリポジトリからサーバアプリケーション情報の獲得

 インタフェースリポジトリには、IDLで定義されたモジュール名、インタフェース名、オペレーション名およびパラメタが階層構造で格納されます。サーバアプリケーションの情報を獲得するため、以下の手順で検索を行います。

(1)InterfaceDefオブジェクトリファレンスの獲得

 インタフェースリポジトリからサーバアプリケーションの情報を獲得するためには、InterfaceDefオブジェクトのオブジェクトリファレンスが必要です。そのため、サーバアプリケーションのオブジェクト名をパラメタとして、ネーミングサービスからサーバアプリケーションのオブジェクトリファレンスを求め、その後、CORBA::Object::_get_interface()により、InterfaceDefオブジェクトリファレンスを獲得します。

  // InterfaceDefオブジェクトリファレンス取得
  CORBA::InterfaceDef_ptr  intf = obj->_get_interface( env );

(2)OperationDefオブジェクトリファレンスの獲得

 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]);

(3)パラメタ情報の獲得

 CORBA::OperationDef::describe()により、サーバアプリケーションがもっているメソッドのパラメタの情報(パラメタの名前、個数、パラメタの型等)をインタフェースリポジトリから検索します。パラメタとして、OperationDefオブジェクトリファレンスを指定します。

  // 指定されたメソッドのパラメタ情報を検索
  CORBA::Contained::Description  *description 
      = OperationDef_obj->describe( env );

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005