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

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

8.1.7 添付ファイル型

 以下に示すデータ型を、RPCアプリケーションのパラメタとして使用することで、添付ファイル(アタッチメント)ということを意識することなく、添付ファイを利用したSOAPメッセージの通信を行うことができます。

XMLのデータ型として登録するデータ型

RPCアプリケーションのパラメタ(Javaのデータ型クラス)

inまたはreturn

outまたはinout

issoap:Image

java.awt.Image

ZZZ.ImageHolder

issoap:Source

javax.xml.transform.Source

ZZZ.SourceHolder

issoap:Multipart

javax.mail.internet.MimeMultipart

ZZZ.MimeMultipartHolder

issoap:DataHandler

javax.activation.DataHandler

ZZZ.DataHandlerHolder

issoap:PlainText

java.lang.String

YYY.StringHolder

 XMLのデータ型として登録するデータ型名として、以下の定数が定義されています。

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

クラス名

フィールド名

説明

Constants

MIME_IMAGE

添付ファイル型"issoap:Image"のネームスペース付き名前を表すjavax.xml.namespace.QName型の定数です。

MIME_SOURCE

添付ファイル型"issoap:Source"のネームスペース付き名前を表すjavax.xml.namespace.QName型の定数です。

MIME_MULTIPART

添付ファイル型"issoap:Multipart"のネームスペース付き名前を表すjavax.xml.namespace.QName型の定数です。

MIME_DATA_HANDLER

添付ファイル型"issoap:DataHandler"のネームスペース付き名前を表すjavax.xml.namespace.QName型の定数です。

MIME_PLAINTEXT

添付ファイル型"issoap:PlainText"のネームスペース付き名前を表すjavax.xml.namespace.QName型の定数です。

 上記の"issoap"が表すネームスペースは"urn:xmlns-fujitsu-com:xml-soap-2002-10"です。

 添付ファイル型としてjavax.activation.DataHandler以外のクラスを使用した場合、使用したクラスに応じてデータ変換が行われるため、受信した添付ファイルのデータが送信元の添付ファイルのデータと異なる場合があります。
 送信元と同じデータを受信する必要がある(データ変換を回避したい)場合は、javax.activation.DataHandlerクラスを使用してください。
 例えば、java.lang.Stringクラスを使用した場合、添付ファイルのデータが送信元の文字コードに関わらず、Javaの文字コードに変換されます。

 
 javax.mail.internet.MimeMultipart,javax.activation.DataHandlerは、JavaMailTMおよびJava Activation Framework(JAF)のAPIクラスです。付属のJavaDOCを参照してください。
 
 issoap:Image型の添付ファイルを扱う場合、およびissoap:DataHandlerやissoap:Multipart型の添付ファイルにjava.awt.Imageオブジェクトを使用する場合(MIMEタイプ image/jpeg, image/gifの場合)は、X Windowシステムのアプリケーションが動作する環境が必要です。

【in/return】

 通常のデータ型と同様に、「inまたはreturn」のクラス(上記の表を参照)のオブジェクトをパラメタとして使用します。

 
 DII方式のクライアントアプリケーションでの使用例です。

 Source source = new StreamSource(new FileInputStream("sample.xml"));
     :(略)
 call.addParameter( "v", Constants.MIME_SOURCE, ParameterMode.IN );
     :(略)
 Object resp = call.invoke( new Object[] { source } );

【out/inout】

 通常のデータ型と同様に、「outまたはinout」のクラス(上記の表を参照)のオブジェクトをパラメタとして使用します。これらのクラスは保持しているデータを表すフィールドと、コンストラクタのみを持つクラスです。
 以下にjavax.xml.transform.Sourceを保持するZZZ.SourceHolderクラスの場合のフィールド、およびコンストラクタについて説明します。他のYYY.データ型名Holderクラス、ZZZ.データ型名Holderクラスも同様に、保持する型のvalueフィールド、デフォルトコンストラクタ、初期値を指定するコンストラクタを持ちます。

クラス名

メソッド/フィールド名

説明

SourceHolder

public Source value

インスタンスフィールド。
インスタンスが現在保持しているSourceの値です。

public SourceHolder (Source initial)

コンストラクタ。
valueフィールドとしてinitialを持つインスタンスを作成します。

 
 RPCサーバアプリケーションでinoutパラメタとして使用する例

 //RPCサーバアプリケーションのメソッド
 // shはinoutパラメタとしてWebサービス・マネージャに登録する
 public void serverMethod(SourceHolder sh) {
   Source inSource = sh.value;
     :(outSourceとして返却するSourceを作成する処理(略))
   sh.value = outSource;
 }

 上記の例では、inoutパラメタとして受け取った、ZZZ.SourceHolderクラスのインスタンスの内容を入れ替えて、RPCクライアントアプリケーションに送信します。


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

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