ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド

18.3.4 添付ファイル型

添付ファイル型は、実際の通信においてXMLへ変換されず、SOAPメッセージの添付ファイルとしてそのままのデータで送受信されるデータ型です。
通常のデータ型と同様に、Webサービスアプリケーションのパラメタ(引数、返り値)、Bean型・構造体型のメンバなどに利用できます。

添付ファイル型に使用するクラスと、それに対応してXMLで使用される型を以下に示します。

Webサービスアプリケーションのパラメタに使用するJavaのデータ型

XMLで使用されるデータ型

javax.activation.DataHandler

wsibp:swaRef
(またはMIMEバインディングのpart要素に任意のMIME型としてマップ)

ポイント

  • wsibp:swaRefは、SOAPメッセージから添付ファイルを参照する要素のXMLのデータ型です。

  • 実際のデータは、SOAPメッセージの添付ファイルとして送受信されます。

  • iswsgen wsdlコマンドのオプションにより、XMLで使用されるデータ型をapachesoap:DataHandlerとすることもできます。

  • 以下の場合、WSDLでMIMEバインディングのpartに任意のMIME型として直接マップされ、XMLのデータ型wsibp:swaRefは使用されません。

    • iswsgen wsdlコマンドで、-styleuseオプションにDOCUMENTLITERALWRAPPED以外を指定し、かつ、

    • javax.activation.DataHandlerがサービスエンドポイントインタフェースの引数または返り値に(Bean/構造体型のメンバや配列ではなく)直接宣言されている場合

javax.activation.DataHandlerは、JAF(Java Activation Framework)で提供されるクラスです。MIMEの各種情報およびデータ内容を保持します。本クラスの詳細については、JavaDocを参照してください。

そのほかの添付ファイルのデータ型

下記のJavaクラスも添付ファイルを表すデータ型として利用することができます。ただし、これらのJavaクラスを使用する場合、バイト列とJavaオブジェクトへの変換が行われるなど、オリジナルのバイト列データが正確に保持されない場合があります。また、これらのクラスを使用したサービスエンドポイントインタフェースからは作成するWSDLはWS-I Attachments Profileに準拠できない場合があります。

Webサービスアプリケーションのパラメタに使用するJavaのデータ型

XMLで使用されるデータ型

java.awt.Image

apachesoap:Image
(またはMIMEバインディングのpart要素MIME型image/jpegとしてマップ)

javax.mail.internet.MimeMultipart

apachesoap:MimeMultipart
(またはMIMEバインディングのpart要素にMIME型multipart/*としてマップ)

javax.xml.transform.Source (注)

apachesoap:Source
(またはMIMEバインディングのpart要素にMIME型text/xmlとしてマップ)

注) javax.xml.transform.Sourceインタフェースの実装クラスには、javax.xml.transform.source.StreamSourceクラスを使用してください。それ以外のクラスのオブジェクトはサポートされません。

mime:contentからJavaクラスへのマッピング

WSDL中のmime:content要素で添付ファイルが指定されている場合、次の表に示すようにJavaクラスにマップされます。

mime:content要素のtype属性

Javaクラス

image/jpeg

java.awt.Image

text/plain

java.lang.String

multipart/*

javax.mail.internet.MimeMultipart

text/xml

javax.xml.transform.Source

application/xml

javax.xml.transform.Source

上記以外のMIME型 (注)

javax.activation.DataHandler

注) image/gif型は未サポートです。

mime:content要素が使用された場合、mime:content要素のpart属性から参照されたwsdl:part要素のtype及びelement属性は、生成されるサービスエンドポイントインタフェースにマップされません。替わりに上記のJavaクラスが使用されます。

ポイント

  • apachesoap:Image、apachesoap:MimeMultipart、apachesoap:Sourceは、SOAPメッセージから添付ファイルを参照する要素のXMLのデータ型です。

  • 実際のデータは、SOAPメッセージの添付ファイルとして送受信されます。

  • これらのJavaクラスを使用する場合は、iswsgen wsdlコマンドのオプションで、apachesoapのネームスペースを使用する指定が必要です。

  • 以下の場合、WSDLのMIMEバインディングのpartに直接マップされ、上記のXMLのデータ型は使用されません。

    • iswsgen wsdlコマンドで、-styleuseオプションにDOCUMENTLITERALWRAPPED以外を指定し、かつ、

    • 添付ファイルのJavaのデータ型がサービスエンドポイントインタフェースの引数または返り値に(Bean/構造体型のメンバや配列ではなく)直接宣言されている場合


  • Javaアプリケーションでjava.awt.Imageクラスを使用する場合は、X Windowシステムのアプリケーションが動作する環境を用意するか、ヘッドレスモードでのアプリケーションの実行が必要になる場合があります。詳細はJavaのドキュメントを参照して下さい。

なお、MIMEバインディングのpart要素が上記に記載されたMIME型以外の場合は、Webサービスアプリケーションのパラメタとしてjavax.activation.DataHandlerが使用されます。ただし、MIME型image/gifは利用できません。

注意

一定以上のサイズの添付ファイルを受信する際、メモリ節約のため、内部的に一時ファイルが作成されます。また、添付ファイルに関するAPIを使用した場合も、一時ファイルが作成される場合があります。
一時ファイルの生成に関するチューニングは、Webサービス設定ファイルで行います。
詳細については、“Webサービスの運用”の“19.3 Webサービス設定ファイル”を参照してください。