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


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

Copyright 2003 FUJITSU LIMITED