Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第6章 CORBA/SOAPゲートウェイの実装> 6.3 CORBAアプリケーションと連携する場合の留意事項

6.3.4 TypeCode型を使用したCORBAサーバアプリケーションとの連携

 CORBAのTypeCodeをメソッドのパラメタまたは復帰値に使用しているメソッドをリモート呼び出しする場合、RPC方式のクライアントアプリケーションでは、リモート呼び出しを実行する前に以下の処理が必要になります。

 
 以下のIDL定義から作成されたCORBAサーバアプリケーションのopメソッドを呼び出した場合のコーディング例を示します。

 module ODsample {
   interface TypeCodetest {
     TypeCode op( in TypeCode arg1 );
   };
 };
 // import宣言
 import javax.xml.rpc.Call;
 import javax.xml.rpc.Service;
 import javax.xml.rpc.ServiceFactory;
 import javax.xml.namespace.QName;
 import javax.xml.rpc.ParameterMode;
     :
 try {
     :
   // Callオブジェクトの作成
   Call _call = service.createCall();
   // 返り値の設定(TypeCodeのQName作成)

   String _ns = "urn:xmlns-fujitsu-com:soap-corba-type2002-02";
   QName _qName = new QName( _ns , "TypeCode" );
   _call.setReturnType( _qName );

   // パラメタの構築
   com.fujitsu.interstage.soap.util.TypeCode _p1 =
               new com.fujitsu.interstage.soap.util.TypeCode( corba_TypeCode1 );
   _call.addParameter( "arg1" , _qName , ParameterMode.IN );
   java.lang.Object[] _iparams = new java.lang.Object[]{ _p1 };

   // メソッド呼び出しと返り値の取得
   com.fujitsu.interstage.soap.util.TypeCode _res =
               ( com.fujitsu.interstage.soap.util.TypeCode )_call.invoke( _iparams );
   org.omg.CORBA.TypeCode _ret = _res.getCORBAType();

 } catch( javax.xml.rpc.ServiceException e ) {
     :
 } catch( javax.xml.rpc.soap.SOAPFaultException e ) {
     :
 } catch( javax.xml.rpc.JAXRPCException e ) {
     :
 } catch( java.rmi.RemoteException e ) {
     :
 } catch( java.lang.Exception e ) {
     :
 }
     :

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

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