30.4.1 Webサービス側JAX-WSエンジンの動作
Webサービス側JAX-WSエンジンでMTOM/XOP仕様形式の添付ファイルを使用できるかどうかは,Webサービス実装クラスに指定されているjavax.xml.ws.soap.MTOMアノテーション,またはjavax.xml.ws.BindingTypeアノテーションに指定するSOAPBindingインタフェースのフィールド値に依存します。MTOM/XOP仕様形式の添付ファイルの使用可否とリクエストメッセージを受信したときの動作を次の表に示します。
項番 |
MTOM/XOP仕様形式の添付ファイル |
受信したリクエストメッセージに含まれるデータ |
受信の成功/失敗 |
しきい値と送信する添付ファイルサイズの関係※ |
送信するレスポンスメッセージに含まれるデータ |
---|---|---|---|---|---|
1 |
使用する |
バイナリデータ |
成功 |
しきい値≦添付ファイルのサイズ |
バイナリデータ |
2 |
Base64形式のデータ |
成功 |
しきい値>添付ファイルのサイズ |
||
3 |
使用しない |
バイナリデータ |
成功 |
なし |
Base64形式のデータ |
4 |
Base64形式のデータ |
成功 |
なし |
Webサービス実装クラスにjavax.xml.ws.soap.MTOMアノテーションを指定しない場合やjavax.xml.ws.BindingTypeアノテーションに指定するSOAPBindingインタフェースのフィールド値にSOAPBinding.SOAP11HTTP_MTOM_BINDINGおよびSOAPBinding.SOAP12HTTP_MTOM_BINDINGを指定しない場合,MTOM/XOP仕様形式の添付ファイルを使用しません。バイナリデータを含んだメッセージかどうかに関係なく,すべてのリクエストメッセージを受信します。また,レスポンスメッセージはBase64形式のデータを含んだメッセージを送信します。
(1) javax.xml.bind.annotation.XmlMimeTypeアノテーションによる変化
Java型とMIMEタイプを関連づけるjavax.xml.bind.annotation.XmlMimeTypeアノテーションをSEIなどにアノテートしている場合とアノテートしていない場合では,MTOM/XOP仕様形式の添付ファイルで送信されるメッセージの添付ファイルパートにあるContent-Typeフィールドの値が変化します。javax.xml.bind.annotation.XmlMimeTypeアノテーションの可否と添付ファイルパートにあるContent-Typeフィールドの値の変化を次に示します。
-
XmlMimeTypeアノテーションをアノテートしている
添付ファイルパートにあるContent-Typeフィールドの値はXmlMimeTypeアノテーションのvalue要素の値となります。
-
XmlMimeTypeアノテーションをアノテートしていない
添付ファイルパートにあるContent-Typeフィールドの値は使用しているJava型に対応した初期値となります。初期値を次の表に示します。
表30‒3 Java型とContent-Typeの初期値 項番
Java型
Content-Typeの初期値
1
java.awt.Image
"image/png"
2
javax.xml.transform.Source
"application/xml"
3
javax.activation.DataHandler
javax.activation.DataHandlerオブジェクトのMIMEタイプ※
4
java.awt.Imageの配列型
"image/png"
5
javax.activation.DataHandlerの配列型
javax.activation.DataHandlerオブジェクトのMIMEタイプ※
6
java.util.List<Image>
"image/png"
7
java.util.List<DataHandler>
javax.activation.DataHandlerオブジェクトのMIMEタイプ※
8
javax.xml.ws.Holder<Image>
"image/png"
9
javax.xml.ws.Holder<Source>
"application/xml"
10
javax.xml.ws.Holder<DataHandler>
javax.activation.DataHandlerオブジェクトのMIMEタイプ※
11
byte[]
"application/octet-stream"
- 注※
-
DataHandlerを使用した場合,Content-Typeフィールドの設定値はDataHandlerオブジェクトの生成方法によって異なります。
-
DataHandler(DataSource)コンストラクタで生成する場合
FileDataSourceの場合,入力となるファイルデータの拡張子から,JAFによって決定されたMIMEタイプがContent-Typeフィールド値として設定されます。
-
DataHandler(Object, String)コンストラクタで生成する場合
DataHandlerオブジェクト生成時に,コンストラクタの第2引数に指定した内容(MIMEタイプ)がそのままContent-Typeフィールド値として設定されます。
-