16.2.2 com.sun.xml.ws.developer.StreamingAttachmentアノテーション
com.sun.xml.ws.developer.StreamingAttachmentアノテーションについて,次に説明します。
- Webサービス側
-
ストリーミングを使用するWebサービスに指定するアノテーションです。Webサービス実装クラスだけに指定できます。SEIに指定した場合は無視されます。また,プロバイダ実装クラスに指定した場合,動作は保証されません。
- Webサービスクライアント側
-
ポートをインジェクトするフィールドまたはsetterメソッドに指定するアノテーションです。詳細については,「10.21.1(4) フィーチャの有効化」を参照してください。それ以外のフィールドやメソッドに指定した場合は無視されます。
cjwsimportコマンドが生成するWebサービス実装クラスのスケルトンクラスを使用して,ストリーミングを使用するWebサービスを作成する場合,Webサービス実装クラスのスケルトンクラスにはcom.sun.xml.ws.developer.StreamingAttachmentアノテーションをマッピングしないので,com.sun.xml.ws.developer.StreamingAttachmentアノテーションを指定する必要があります。なお,Webサービス実装クラスにcom.sun.xml.ws.developer.StreamingAttachmentアノテーションを指定しても,サービス側JAX-WSエンジンが発行するWSDLファイルやhwsgenコマンドが生成するWSDLファイルには,ストリーミングが使用されていることを示す要素や属性は出現しません。
com.sun.xml.ws.developer.StreamingAttachmentアノテーションはWebサービス開始時に参照する値であるため,hwsgenコマンドの実行時には解釈しません。
com.sun.xml.ws.developer.StreamingAttachmentアノテーションを使用した例を次の図に示します。
- 〈この項の構成〉
(1) dir要素(com.sun.xml.ws.developer.StreamingAttachment)
dir要素は,Webサービスでストリーミングを使用する場合に,受信した添付ファイルを含むMIME Multipart/Related構造のSOAPメッセージに含まれるMIMEボディを一時ファイルとして出力するときに使用するディレクトリを指定します。デフォルト値は空文字("")です。
dir要素の要素値に空文字("")またはnullを指定した場合,一時ファイルの出力先はJavaのデフォルトの一時ファイルディレクトリ(システムプロパティにある"java.io.tmpdir"キーに対応する値)となります。また,存在しないディレクトリ名,アクセス権のないディレクトリ名,または存在するファイル名を指定した場合,Webサービス開始時にメッセージを出力し,受信した添付ファイルを含むMIME Multipart/Related構造のSOAPメッセージに含まれるMIMEボディをメモリ上に展開します(KDJW10026-W)。
(2) parseEagerly要素(com.sun.xml.ws.developer.StreamingAttachment)
parseEagerly要素は,Webサービスでストリーミングを使用する際に,受信した添付ファイルを含むMIME Multipart/Related構造のSOAPメッセージを詳細に解析するかどうかを指定します。デフォルト値はfalseです。
(3) memoryThreshold要素(com.sun.xml.ws.developer.StreamingAttachment)
memoryThreshold要素は,Webサービスでストリーミングを使用する際に,受信した添付ファイルを含むMIME Multipart/Related構造のSOAPメッセージに含まれるMIMEボディを一時ファイルとして出力するかどうかを判定するためのしきい値(単位:バイト)を指定します。memoryThreshold要素には,16KB(16384L)より大きい値または-1を指定します。これら以外の値を指定した場合,動作は保証されません。-1を指定した場合,常にMIMEボディをメモリ上に展開します。デフォルト値は「1048576L」です。
受信したMIME Multipart/Related構造のSOAPメッセージに含まれるMIMEボディをメモリ上に展開するかどうかの判定については,「32.3 一時ファイル(ストリーミング)」を参照してください。