ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)
Interstage

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

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


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

インタフェースリポジトリからサーバアプリケーションの情報を獲得するためには、org.omg.CORBA.InterfaceDefオブジェクトのオブジェクトリファレンスが必要です。org.omg.CORBA.Object._get_interface_def()メソッドを使用します。

//org.omg.CORBA.InterfaceDefオブジェクトリファレンス取得
org.omg.CORBA.Object intf_obj = target._get_interface_def();
org.omg.CORBA.InterfaceDef intf = org.omg.CORBA.InterfaceDefHelper.narrow( intf_obj );

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

org.omg.CORBA.InterfaceDef.lookup_name()メソッドにより、インタフェースリポジトリから指定されたメソッドを検索します。パラメタとしてサーバアプリケーションのメソッド名を指定します。結果として、指定したメソッド情報が格納されたorg.omg.CORBA.OperationDefオブジェクトのオブジェクトリファレンスが通知されます。

//メソッドのorg.omg.CORBA.OperationDefオブジェクトリファレンス取得
String name = new String( "calcurate" ); 
org.omg.CORBA.Contained[] intf_opr =
intf.lookup_name( name, -1, org.omg.CORBA.DefinitionKind.dk_Operation, false );

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

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

org.omg.CORBA.ContainedPackage.Description desc = intf_opr[0].describe();
//指定されたメソッドのパラメタ情報を検索