30.5.1 添付ファイルからSOAPメッセージへのマッピング(MTOM/XOP)

添付ファイルからSOAPメッセージへマッピングするときの設定値について説明します。マッピング規則については,「30.5.2 添付ファイルからSOAPメッセージへのマッピングの注意事項(MTOM/XOP)」と合わせて確認してください。

<この項の構成>
(1) HTTPヘッダ
(2) HTTPボディ

(1) HTTPヘッダ

MTOM/XOP仕様形式の添付ファイル使用時に,HTTPヘッダのフィールドおよびパラメタに設定される値を次の表に示します。

表30-6 HTTPヘッダのフィールドおよびパラメタの設定値

項番フィールド名パラメタ名設定値
1Content-Type"multipart/related"が設定されます。
2startルートパートのContent-Idが設定されます。
3type"application/soap+xml"が設定されます。
4boundaryMIMEパートの境界文字列が設定されます。
5start-info
SOAP 1.1仕様
"text/xml"が設定されます。
SOAP 1.2仕様
"application/soap+xml"が設定されます。
(凡例)
-:Content-Typeに直接設定されることを示します。
注※
MIMEパートがルートパートだけの場合や少なくとも1個の添付ファイルMIMEパートを並べている(MTOM/XOP仕様形式の添付ファイル付きSOAPメッセージである)場合でも,"multipart/related"を設定してください。

(2) HTTPボディ

HTTPボディは,ルートパート,添付ファイルパート,および各パートの境界文字列で構成されます。添付ファイル使用時に,各パートに生成される内容,および設定される値を示します。

(a) ルートパートのMIMEヘッダ

添付ファイル使用時に,ルートパートのフィールドに設定される値を次の表に示します。

表30-7 ルートパートのフィールドおよびパラメタの設定値

項番フィールド名パラメタ名設定値
1Content-Type"application/xop+xml"が設定されます。
2charset"utf-8"が設定されます。
3type
SOAP 1.1仕様
"text/xml"が設定されます。
SOAP 1.2仕様
"application/soap+xml"が設定されます。
4Content-Transfer-Encodingなし"binary"が設定されます。
5Content-Idなし"rootpart*"+"グローバルに一意な値"+"@"+"jaxws.cosminexus.com"が設定されます。
(凡例)
-:Content-Typeに直接設定されることを示します。

(b) ルートパートのMIMEボディ

添付ファイルを使用する場合,ルートパートのMIMEボディには,SOAPエンベロープがそのまま格納されます。SOAPエンベロープ内のSOAPボディからMTOM/XOP仕様形式の添付ファイルを参照する方法として,XOPが使用されます。

(c) 添付ファイルパートのMIMEヘッダ

添付ファイル使用時に,添付ファイルパートのMIMEヘッダに設定される値を次の表に示します。

表30-8 添付ファイルパートのフィールドおよびパラメタの設定値

項番フィールド名パラメタ名設定値
1Content-TypeXmlMimeTypeアノテーションのvalue要素に指定したMIMEタイプのテキスト表現が設定されます。※1,※2,※3
2charsetMTOM/XOP仕様形式の添付ファイルの対象がSource型の場合,"UTF-8"が設定されます。※4
MTOM/XOP仕様形式の添付ファイルの対象がDataHandler型の場合,DataHandlerオブジェクト生成時に指定した文字コードが設定されます。※5
MTOM/XOP仕様形式の添付ファイルの対象が上記以外のJava型の場合,パラメタは出現しません。
3Content-Transfer-Encodingなし"binary"が設定されます。
4Content-Idなし"グローバルに一意な値"+"@"+"jaxws.cosminexus.com"が設定されます。
(凡例)
-:Content-Typeに直接設定されることを示します。

注※1
Content-Typeフィールドに設定されるMIMEタイプで,XMLを表すMIMEタイプである"text/xml"と"application/xml"では,"application/xml"をお勧めします。
注※2
XmlMimeTypeアノテーションのvalue要素にパラメタを持ったMIMEタイプを指定した場合,そのパラメタについてもContent-Typeフィールドに設定されます。
注※3
Content-Typeフィールドの設定値は,DataHandlerオブジェクトの生成方法によって,次のように異なります。
  • DataHandler(DataSource)コンストラクタで生成する場合
    FileDataSourceの場合,入力となる添付ファイルの拡張子から,JAFによって決定されたMIMEタイプがContent-Typeフィールド値として設定されます。
  • DataHandler(Object, String)コンストラクタで生成する場合
    DataHandlerオブジェクト生成時に,コンストラクタの第2引数に指定した内容(MIMEタイプ)がそのままContent-Typeフィールド値として設定されます。
注※4
xmime:expectedContentTypes属性またはjavax.xml.bind.annotation.XmlMimeTypeアノテーションで指定したMIMEタイプがcharsetを含む場合,Content-Type フィールドにあるcharsetの設定値は,指定したMIMEタイプに含まれるcharsetの値になります。
注※5
次のようにDataHandlerオブジェクトを生成して,MTOM/XOP仕様形式の添付ファイルとして送信した場合,Content-Typeのcharsetには,第2引数に指定したcharsetパラメタ値「Shift_JIS」が設定されます。

DataHandler dhandler = new DataHandler ("あいうえお", "text/plain; charset=Shift_JIS");

MTOM/XOP仕様形式の添付ファイルのJava型のjavax.activation.DataHandler型は,wsi:swaRef形式の添付ファイルとして使用できるJava型のjavax.activation.DataHandler型と同様に,JavaBeans Activation Framework(JAF)の型です。そのため,javax.activation.DataHandler型には任意のMIMEタイプの添付ファイルデータを指定できます。