32.2.1 Webサービス側
Webサービスでストリーミングを使用するには,Webサービス実装クラスにcom.sun.xml.ws.developer.StreamingAttachmentアノテーションをアノテートします。com.sun.xml.ws.developer.StreamingAttachmentアノテーションについては,「16.2.2 com.sun.xml.ws.developer.StreamingAttachmentアノテーション」を参照してください。
ストリーミングを使用したWebサービス実装クラスの例を次に示します。この例では,"C:/TMP"ディレクトリをストリーミングによる一時ファイルの出力先に指定し,添付ファイルを含むSOAPメッセージの詳細な解析をして,50,000バイト以上のMIMEボディを一時ファイルとして出力します。
package com.sample; ・・・・・・ @MTOM @StreamingAttachment(dir="C:/TMP", parseEagerly=true, memoryThreshold=50000L) @BindingType(・・・) public class UserInfoImpl implements UserInfo { public DataHandler getUserInfo(DataHandler dataHandler) throws UserDefinedException { if (dataHandler instanceof StreamingDataHandler) { StreamingDataHandler sdh = null; try { sdh = (StreamingDataHandler)dataHandler; ・・・・・・ } finally { try { if (sdh != null) { sdh.close(); } } catch(Exception ex) { ・・・・・・ } } } ・・・・・・ } }
Webサービス側でストリーミングを使用し,次の条件をすべて満たすリクエストメッセージを受信した場合,レスポンスメッセージに含まれるデータがBase64形式のデータになります。
-
リクエストメッセージのHTTPヘッダにあるAcceptフィールドにapplication/xop+xmlがない。
-
リクエストメッセージのルートパートにあるContent-Typeにapplication/xop+xmlがない。