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

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

6.3.1 Javaの値とXMLの値を変換するための変換マッピングの対応づけ(CORBA)

 CORBAサーバアプリケーション(コンポーネント・トランザクションサーバアプリケーションを含む)と連携するRPCクライアントアプリケーションでは、IDL定義された列挙型、構造体型および例外型(“XMLとCORBAのデータ型マッピング”でXMLデータ型の構造体にマッピングされる型)の変換マッピングの対応づけを行います。

 module ODdemo{
   interface  calculator{
     exception ZEROPARAM {};
     enum  CALCKIND {ADD, SUB, MULTI, DEVIDE};
     struct result {
       long  add_result;
       long  subtract_result;
       long  multiple_result;
       float  divide_result;
     };

     result calculate( in long a, in long b, in CALCKIND c )  raises( ZEROPARAM );
   };
 }; 

 このIDL定義された構造体型、および例外型のマッピングの対応づけは、以下のようになります。

 // import文宣言
 import javax.xml.rpc.Service;
 import javax.xml.rpc.ServiceFactory;
 import javax.xml.namespace.QName;
 import javax.xml.rpc.encoding.TypeMappingRegistry;
 import javax.xml.rpc.encoding.TypeMapping;
      :
 Service service = null;
 try {
   service = ServiceFactory.newInstance().createService(new QName("",""));
 } catch( javax.xml.rpc.ServiceException e ){
      :
 }
 TypeMappingRegistry tmr = service.getTypeMappingRegistry();
 TypeMapping tm = tmr.createTypeMapping();
 // 構造体   resultのマッピング登録
 QName _qname = new QName( "urn:Fujitsu-Soap-Service-Data", "ODdemo-calculator-result " );
 tm.register( ODdemo.calculatorPackage.resultSOAPGWType.class, _qname,
           new com.fujitsu.interstage.soapx.encoding.ser.BeanSerializerFactory(
           ODdemo.calculatorPackage.resultSOAPGWType.class, _qname),
           new com.fujitsu.interstage.soapx.encoding.ser.BeanDeserializerFactory(
           ODdemo.calculatorPackage.resultSOAPGWType.class, _qname ) );
 // 例外 ZEROPARAMのマッピング登録
 _qname = new QName( "urn:Fujitsu-Soap-Service-Data", "ODdemo-calculator-ZEROPARAM" );
 tm.register(ODdemo.calculatorPackage.ZEROPARAMSOAPGWType.class, _qname,
           new com.fujitsu.interstage.soapx.encoding.ser.BeanSerializerFactory( 
           ODdemo.calculatorPackage.ZEROPARAMSOAPGWType.class, _qname),
           new com.fujitsu.interstage.soapx.encoding.ser.BeanDeserializerFactory( 
           ODdemo.calculatorPackage.ZEROPARAMSOAPGWType.class, _qname ) );
 // 列挙 CALCKINDのマッピング登録
 _qname = new QName( "urn:Fujitsu-Soap-Service-Data", "ODdemo-calculator-CALCKIND" );
 tm.register(ODdemo.calculatorPackage.CALCKINDSOAPEnumImpl.class, _qname,
           new com.fujitsu.interstage.soapx.encoding.ser.EnumSerializerFactory( 
           ODdemo.calculatorPackage.CALCKINDSOAPEnumImpl.class, _qname),
           new com.fujitsu.interstage.soapx.encoding.ser.EnumDeserializerFactory( 
           ODdemo.calculatorPackage.CALCKINDSOAPEnumImpl.class, _qname ) );
 // マッピング情報をマッピングレジストリへ登録
 tmr.register( "http://schemas.xmlsoap.org/soap/encoding/", tm );
      :

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

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