Hitachi

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


28.4.1 添付ファイルからSOAPメッセージへのマッピング(wsi:swaRef形式)

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

〈この項の構成〉

(1) HTTPヘッダ

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

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

項番

フィールド名

パラメタ名

設定値

1

Content-Type

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

2

type

SOAP 1.1仕様

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

SOAP 1.2仕様

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

3

boundary

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

(凡例)

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

1個以上の非ルートMIMEパートを列挙している場合(添付ファイル付きSOAPメッセージを送受信する場合)は,Content-Typeにmultipart/relatedが設定されます。MIMEパートがない場合,SOAP 1.1仕様のときは"text/xml"が,SOAP 1.2仕様のときは"application/soap+xml"が設定されます。

(2) HTTPボディ

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

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

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

表28‒6 ルートパートのフィールドの設定値

項番

フィールド名

設定値

1

Content-Type

SOAP 1.1仕様

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

SOAP 1.2仕様

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

2

Content-Id

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

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

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

CID URLスキームの形式を次に示します。

"cid:"+<添付ファイルパートのContent-Id>

(c) ルートパートのMIMEヘッダとMIMEボディの境界文字列

ルートパートのMIMEヘッダとMIMEボディ間には,境界文字列として"CRLF"が設定されます。

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

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

表28‒7 添付ファイルパートのMIMEヘッダの設定値

項番

フィールド名

パラメタ名

設定値

1

Content-Type

添付ファイルの種類に応じたMIMEタイプ※1が設定されます。

2

charset

DataHandlerオブジェクト生成時に指定した文字コード※2が設定されます。

3

Content-Transfer-Encoding

なし

"binary"が設定されます。

4

Content-Id

なし

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

(凡例)

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

注※1

Content-Typeフィールドの設定値は,DataHandlerオブジェクトの生成方法によって,次のように異なります。

  • DataHandler(DataSource)コンストラクタで生成する場合

    FileDataSourceの場合,入力となる添付ファイルの拡張子から,JAFによって決定されたMIMEタイプがContent-Typeフィールド値として設定されます。添付ファイルの拡張子とMIMEタイプのマッピングについては,「28.4.2(3) 添付ファイルの拡張子とMIMEタイプのマッピング」を参照してください。

  • DataHandler(Object, String)コンストラクタで生成する場合

    DataHandlerオブジェクト生成時に,コンストラクタの第2引数に指定した内容(MIMEタイプ)がそのままContent-Typeフィールド値として設定されます。

注※2

例えば,DataHandlerオブジェクトの生成を次のように生成した場合,Content-Typeのcharsetには,第2引数に指定したcharsetパラメタ値「Shift_JIS」が設定されます。

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

添付ファイルのJava型であるjavax.activation.DataHandler型は,JavaBeans Activation Framework(JAF)の型であるため,任意のMIMEタイプの添付ファイルを指定できます。FileDataSourceを使用してDataHandlerオブジェクトを生成する場合の添付ファイルの拡張子と,デフォルトで設定されるMIMEタイプの対応については,「28.4.2(3) 添付ファイルの拡張子とMIMEタイプのマッピング」を参照してください。

(e) 添付ファイルパートのMIMEボディ

添付ファイルパートのMIMEボディには,添付ファイルの内容を表すバイナリデータが格納されます。

(f) 添付ファイルパートのMIMEヘッダとMIMEボディの境界文字列

添付ファイルパートのMIMEヘッダとMIMEボディの境界文字列は,ルートパートの場合と同様に,境界文字列として"CRLF"が設定されます。

(g) 各MIMEパート間の境界文字列

ルートパートと添付ファイルパート間,および添付ファイルパート間には,境界文字列として次の文字列が設定されます。

"CRLF"+"--"+"<HTTPヘッダのboundaryパラメタの値>"

(h) MIMEパートの終端文字列

MIMEパートの終端には,終端文字列として次の文字列が設定されます。

"CRLF"+"--"+"<HTTPヘッダのboundaryパラメタの値>"+"--"

(3) HTTPヘッダとHTTPボディの境界文字列

HTTPヘッダとHTTPボディ間には,境界文字列として"CRLF"が設定されます。