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

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

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

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

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

 module ODsample {
  interface anytest {
  any op( in any 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();
  // 返り値の設定(AnyのQName作成)
  String _ns = "urn:xmlns-fujitsu-com:soap-corba-type2002-02";
  QName _qName = new QName( _ns , "Any" );
  _call.setReturnType( _qName );

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

  // メソッド呼び出しと返り値の取得
  com.fujitsu.interstage.soap.util.Any _res =
      ( com.fujitsu.interstage.soap.util.Any )_call.invoke( _iparams );
  org.omg.CORBA.Any _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 ) {
    :
 }
    :



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

Copyright 2003 FUJITSU LIMITED