添付ファイル型は、実際の通信においてXMLへ変換されず、SOAPメッセージの添付ファイルとしてそのままのデータで送受信されるデータ型です。
通常のデータ型と同様に、Webサービスアプリケーションのパラメタ(引数、返り値)、Bean型・構造体型のメンバなどに利用できます。
添付ファイル型に使用するクラスと、それに対応してXMLで使用される型を以下に示します。
Webサービスアプリケーションのパラメタに使用するJavaのデータ型 | XMLで使用されるデータ型 |
---|---|
javax.activation.DataHandler | wsibp:swaRef |
ポイント
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 |
javax.mail.internet.MimeMultipart | apachesoap:MimeMultipart |
javax.xml.transform.Source (注) | apachesoap:Source |
注) 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サービス設定ファイル”を参照してください。