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

添付ファイルからSOAPメッセージをマッピングするときの注意事項について説明します。

<この項の構成>
(1) MIMEパートの記述順序
(2) ルートパートから添付ファイルへのマッピング
(3) 添付ファイルの拡張子とMIMEタイプのマッピング
(4) 添付ファイルのデータサイズと添付ファイルパートへのマッピング

(1) MIMEパートの記述順序

MIMEパートは1個のルートパートと0個以上の添付ファイルパートで構成されます。

ルートパートは,MIMEパートの先頭に記述されます。ルートパートのあとに,添付ファイルパートが記述されます。

添付ファイルパートでは,Javaインタフェースで指定された引数や戻り値がマッピングされます。Javaインタフェースの指定内容と添付ファイルパートでの記述順序の対応を次の表に示します。

表28-8 Javaインタフェースの指定内容と添付ファイルパートの記述順序

項番Javaインタフェースでの指定個所添付ファイルパートの記述順序
1メソッド引数メソッド引数に指定された順に記述されます。
2メソッド戻り値添付ファイルパートの先頭に記述されます。
3配列型配列内の要素順に記述されます。
4ユーザ定義型ユーザ定義型内での指定順に記述されます。
ユーザ定義型の中で指定したユーザ定義型で,添付ファイルのJava型を指定するときは,深さ優先順で添付ファイルパートが記述されます。

Javaインタフェースと添付ファイルパートのマッピング例を示します。

図28-5 Javaインタフェースと添付ファイルパートのマッピング例

[図データ]

(2) ルートパートから添付ファイルへのマッピング

ルートパートのSOAPボディに記述されるCID URLスキームには,対応する添付ファイルパートのContent-Idが記述されます。Content-Idによって,ルートパートから対応する添付ファイルパートが参照されます。

添付ファイル付きSOAPメッセージの一部を示します。太字部分がCID URLスキームと,対応する添付ファイルパートのContent-Idになります。

--uuid:73a28380-5de5-45e8-af15-c879e65d62a0
Content-Type: text/xml

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
 <S:Body>
   <getUserData xmlns="http://localhost">
     <in0>cid:d10ed73c-e9b7-418e-8201-ba920cccb214@jaxws.cosminexus.com</in0>
   </getUserData>
 </S:Body>
</S:Envelope>

--uuid:73a28380-5de5-45e8-af15-c879e65d62a0
Content-Id:<d10ed73c-e9b7-418e-8201-ba920cccb214@jaxws.cosminexus.com>
Content-Type: text/plain
Content-Transfer-Encoding: binary

[添付データ]
--uuid:73a28380-5de5-45e8-af15-c879e65d62a0--

(3) 添付ファイルの拡張子とMIMEタイプのマッピング

添付ファイルの拡張子と,デフォルトで設定されるMIMEタイプのマッピングを次の表に示します。

表28-9 添付ファイルの拡張子とMIMEタイプの対応表

項番添付ファイルの拡張子設定されるMIMEタイプ
1html,htmtext/html
2txt,texttext/plain
3gif,GIFimage/gif
4iefimage/ief
5jpeg,jpg,jpe,JPGimage/jpeg
6tiff,tifimage/tiff
7xwdimage/x-xwindowdump
8ai,eps,psapplication/postscript
9rtfapplication/rtf
10texapplication/x-tex
11texinfo,texiapplication/x-texinfo
12t,tr,roffapplication/x-troff
13auaudio/basic
14midi,midaudio/midi
15aifcaudio/x-aifc
16aif,aiffaudio/x-aiff
17wavaudio/x-wav
18mpeg,mpg,mpevideo/mpeg
19qt,movvideo/quicktime
20avivideo/x-msvideo

この表にない拡張子を指定した場合,MIMEタイプは「application/octet-stream」が設定されます。

(4) 添付ファイルのデータサイズと添付ファイルパートへのマッピング

Javaインタフェースに指定する添付ファイルのデータサイズがnullの場合と,0バイト以上のデータがある場合では,添付ファイルパートへのマッピング方法が異なります。それぞれの場合のマッピングについて説明します。

(a) 添付ファイルのデータサイズがnullの場合

添付ファイルのデータサイズがnullの場合,添付ファイルパートにマッピングされません。MIMEパートを生成しないで,SOAPエンベロープだけが記述されます。また,SOAPボディの該当する引数の要素には,空の要素が指定されます。

添付ファイルのデータサイズがnullの場合のマッピング例を示します。

(b) 添付ファイルのデータサイズが0バイト以上の場合

添付ファイルのデータサイズが0バイト以上の場合,添付ファイルパートにマッピングされます。この場合,ルートパートと添付ファイルパートから構成されるマルチパートとなります。Javaインタフェースで複数の添付ファイルを指定している場合は,添付ファイルパートは複数記述されます。ただし,0バイトの場合は,添付ファイルパート内のMIMEボディは空となります。