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

第8章 サポートされるデータ型> 8.1 XMLとJavaのデータ型マッピング

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

 構造体型・Bean型・列挙型をDII方式のRPCクライアントアプリケーションで使用する場合、javax.xml.rpc.encoding.TypeMappingクラスのregisterメソッドで、

を指定して変換マッピングの対応づけを行います。

 以下にシリアライザファクトリ、デシリアライザファクトリのクラスについて示します。

■構造体型・Bean型を登録する場合のシリアライザファクトリとデシリアライザファクトリ

●パッケージ:com.fujitsu.interstage.soapx.encoding.ser

クラス名

コンストラクタ

説明

BeanSerializerFactory
implements
javax.xml.rpc.encoding.SerializerFactory

public BeanSerializerFactory
( Class beanClass,
javax.xml.namespace.QName typeName )

ユーザ定義型のクラス"beanClass"を、ネームスペース付きの名前 "typeName"のXMLのデータ型に関連付ける構造体型/Bean型シリアライザファクトリを構築します。

BeanDeserializerFactory
implements
javax.xml.rpc.encoding.DeserializerFactory

public BeanDeserializerFactory
( Class beanClass,
javax.xml.namespace.QName typeName )

ネームスペース付きの名前"typeName"のXMLのデータ型を、ユーザ定義型のクラス"beanClass"に関連付ける構造体型/Bean型デシリアライザファクトリを構築します。

 構造体型またはBean型のユーザ定義型を使用するには、上記のコンストラクタでインスタンスを構築し、javax.xml.rpc.encoding.TypeMappingクラスのregisterメソッドで構築したインスタンスを登録します。アプリケーションでは、シリアライザファクトリ・デシリアライザファクトリのメソッドを使用する必要はありません。

■列挙型を登録する場合のシリアライザファクトリとデシリアライザファクトリ

●パッケージ:com.fujitsu.interstage.soapx.encoding.ser

クラス名

コンストラクタ

説明

EnumSerializerFactory
implements
javax.xml.rpc.encoding.SerializerFactory

public EnumSerializerFactory
( Class enumClass,
javax.xml.namespace.QName typeName )

ユーザ定義型のクラス"enumClass"を、ネームスペース付きの名前 "typeName"のXMLのデータ型に関連付ける列挙型シリアライザファクトリを構築します。

EnumDeserializerFactory
implements
javax.xml.rpc.encoding.DeserializerFactory

public EnumDeserializerFactory
( Class enumClass,
javax.xml.namespace.QName typeName )

ネームスペース付きの名前"typeName"のXMLのデータ型を、ユーザ定義型のクラス" enumClass"に関連付ける列挙型デシリアライザファクトリを構築します。

 列挙型のユーザ定義型を使用するには、上記のコンストラクタでインスタンスを構築し、javax.xml.rpc.encoding.TypeMappingクラスのregisterメソッドで構築したインスタンスを登録します。アプリケーションでは、シリアライザファクトリ・デシリアライザファクトリのメソッドを使用する必要はありません。

■変換マッピングの対応づけの例

 以下に構造体の場合の例を示して説明します。

 package fujitsu.sample;   // パッケージ名
 public class Human
   implements java.io.Serializable {
     :
 }

 このリモートインタフェース定義に定義されたJavaクラスのマッピングの対応づけは、以下のようになります。

 // 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 = ServiceFactory.newInstance().createService(new QName("",""));
   TypeMappingRegistry tmr = service.getTypeMappingRegistry();
   TypeMapping tm = tmr.createTypeMapping();
   // 構造体  Humanのマッピング登録
   QName _qname =
      new QName( "urn:Fujitsu-Soap-Service-Data", "fujitsu-sample-Human" );
   tm.register( fujitsu.sample.Human.class, _qname,
      new com.fujitsu.interstage.soapx.encoding.ser.BeanSerializerFactory( 
              fujitsu.sample.Human.class, _qname),
      new com.fujitsu.interstage.soapx.encoding.ser.BeanDeserializerFactory( 
              fujitsu.sample.Human.class, _qname ) );
   tmr.register( "http://schemas.xmlsoap.org/soap/encoding/", tm );  //SOAP1.1の場合
   tmr.register( "http://www.w3.org/2002/06/soap-encoding", tm );   // SOAP1.2の場合
      :

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

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