30.5.1 添付ファイルからSOAPメッセージへのマッピング(MTOM/XOP)
添付ファイルからSOAPメッセージへマッピングするときの設定値について説明します。マッピング規則については,「30.5.2 添付ファイルからSOAPメッセージへのマッピングの注意事項(MTOM/XOP)」と合わせて確認してください。
- 〈この項の構成〉
(1) HTTPヘッダ
MTOM/XOP仕様形式の添付ファイル使用時に,HTTPヘッダのフィールドおよびパラメタに設定される値を次の表に示します。
項番 |
フィールド名 |
パラメタ名 |
設定値 |
---|---|---|---|
1 |
Content-Type |
− |
"multipart/related"が設定されます。※ |
2 |
start |
ルートパートのContent-Idが設定されます。 |
|
3 |
type |
"application/soap+xml"が設定されます。 |
|
4 |
boundary |
MIMEパートの境界文字列が設定されます。 |
|
5 |
start-info |
|
(2) HTTPボディ
HTTPボディは,ルートパート,添付ファイルパート,および各パートの境界文字列で構成されます。添付ファイル使用時に,各パートに生成される内容,および設定される値を示します。
(a) ルートパートのMIMEヘッダ
添付ファイル使用時に,ルートパートのフィールドに設定される値を次の表に示します。
項番 |
フィールド名 |
パラメタ名 |
設定値 |
---|---|---|---|
1 |
Content-Type |
− |
"application/xop+xml"が設定されます。 |
2 |
charset |
"utf-8"が設定されます。 |
|
3 |
type |
|
|
4 |
Content-Transfer-Encoding |
なし |
"binary"が設定されます。 |
5 |
Content-Id |
なし |
"rootpart*"+"グローバルに一意な値"+"@"+"jaxws.cosminexus.com"が設定されます。 |
(b) ルートパートのMIMEボディ
添付ファイルを使用する場合,ルートパートのMIMEボディには,SOAPエンベロープがそのまま格納されます。SOAPエンベロープ内のSOAPボディからMTOM/XOP仕様形式の添付ファイルを参照する方法として,XOPが使用されます。
(c) 添付ファイルパートのMIMEヘッダ
添付ファイル使用時に,添付ファイルパートのMIMEヘッダに設定される値を次の表に示します。
項番 |
フィールド名 |
パラメタ名 |
設定値 |
---|---|---|---|
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"が設定されます。 |
- 注※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タイプの添付ファイルデータを指定できます。