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がない。