Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


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

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

〈この項の構成〉

(1) HTTPヘッダ

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

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

項番

フィールド名

パラメタ名

設定値

1

Content-Type

"multipart/related"が設定されます。

2

start

ルートパートのContent-Idが設定されます。

3

type

"application/soap+xml"が設定されます。

4

boundary

MIMEパートの境界文字列が設定されます。

5

start-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 ルートパートのフィールドおよびパラメタの設定値

項番

フィールド名

パラメタ名

設定値

1

Content-Type

"application/xop+xml"が設定されます。

2

charset

"utf-8"が設定されます。

3

type

SOAP 1.1仕様

"text/xml"が設定されます。

SOAP 1.2仕様

"application/soap+xml"が設定されます。

4

Content-Transfer-Encoding

なし

"binary"が設定されます。

5

Content-Id

なし

"rootpart*"+"グローバルに一意な値"+"@"+"jaxws.cosminexus.com"が設定されます。

(凡例)

−:Content-Typeに直接設定されることを示します。

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

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

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

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

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

項番

フィールド名

パラメタ名

設定値

1

Content-Type

XmlMimeTypeアノテーションのvalue要素に指定したMIMEタイプのテキスト表現が設定されます。※1,※2,※3

2

charset

MTOM/XOP仕様形式の添付ファイルの対象がSource型の場合,"UTF-8"が設定されます。※4

MTOM/XOP仕様形式の添付ファイルの対象がDataHandler型の場合,DataHandlerオブジェクト生成時に指定した文字コードが設定されます。※5

MTOM/XOP仕様形式の添付ファイルの対象が上記以外のJava型の場合,パラメタは出現しません。

3

Content-Transfer-Encoding

なし

"binary"が設定されます。

4

Content-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タイプの添付ファイルデータを指定できます。