28.4.2 添付ファイルからSOAPメッセージへのマッピングの注意事項(wsi:swaRef形式)
添付ファイルからSOAPメッセージをマッピングするときの注意事項について説明します。
- 〈この項の構成〉
(1) MIMEパートの記述順序
MIMEパートは1個のルートパートと0個以上の添付ファイルパートで構成されます。
ルートパートは,MIMEパートの先頭に記述されます。ルートパートのあとに,添付ファイルパートが記述されます。
添付ファイルパートでは,Javaインタフェースで指定された引数や戻り値がマッピングされます。Javaインタフェースの指定内容と添付ファイルパートでの記述順序の対応を次の表に示します。
項番 |
Javaインタフェースでの指定個所 |
添付ファイルパートの記述順序 |
---|---|---|
1 |
メソッド引数 |
メソッド引数に指定された順に記述されます。 |
2 |
メソッド戻り値 |
添付ファイルパートの先頭に記述されます。 |
3 |
配列型 |
配列内の要素順に記述されます。 |
4 |
ユーザ定義型 |
ユーザ定義型内での指定順に記述されます。 ユーザ定義型の中で指定したユーザ定義型で,添付ファイルのJava型を指定するときは,深さ優先順で添付ファイルパートが記述されます。 |
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タイプのマッピングを次の表に示します。
項番 |
添付ファイルの拡張子 |
設定されるMIMEタイプ |
---|---|---|
1 |
html,htm |
text/html |
2 |
txt,text |
text/plain |
3 |
gif,GIF |
image/gif |
4 |
ief |
image/ief |
5 |
jpeg,jpg,jpe,JPG |
image/jpeg |
6 |
tiff,tif |
image/tiff |
7 |
xwd |
image/x-xwindowdump |
8 |
ai,eps,ps |
application/postscript |
9 |
rtf |
application/rtf |
10 |
tex |
application/x-tex |
11 |
texinfo,texi |
application/x-texinfo |
12 |
t,tr,roff |
application/x-troff |
13 |
au |
audio/basic |
14 |
midi,mid |
audio/midi |
15 |
aifc |
audio/x-aifc |
16 |
aif,aiff |
audio/x-aiff |
17 |
wav |
audio/x-wav |
18 |
mpeg,mpg,mpe |
video/mpeg |
19 |
qt,mov |
video/quicktime |
20 |
avi |
video/x-msvideo |
この表にない拡張子を指定した場合,MIMEタイプは「application/octet-stream」が設定されます。
(4) 添付ファイルのデータサイズと添付ファイルパートへのマッピング
Javaインタフェースに指定する添付ファイルのデータサイズがnullの場合と,0バイト以上のデータがある場合では,添付ファイルパートへのマッピング方法が異なります。それぞれの場合のマッピングについて説明します。
(a) 添付ファイルのデータサイズがnullの場合
添付ファイルのデータサイズがnullの場合,添付ファイルパートにマッピングされません。MIMEパートを生成しないで,SOAPエンベロープだけが記述されます。また,SOAPボディの該当する引数の要素には,空の要素が指定されます。
添付ファイルのデータサイズがnullの場合のマッピング例を示します。
-
Webサービス呼び出しプログラム
... UserInfoService service = new UserInfoService(); UserInfo impl = service.getUserInfo(); result = impl.getUserData( null ); ...
-
SOAPメッセージ
<?xml version="1.0" ?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <getUserData xmlns="http://localhost"> </getUserData> </S:Body> </S:Envelope>
(b) 添付ファイルのデータサイズが0バイト以上の場合
添付ファイルのデータサイズが0バイト以上の場合,添付ファイルパートにマッピングされます。この場合,ルートパートと添付ファイルパートから構成されるマルチパートとなります。Javaインタフェースで複数の添付ファイルを指定している場合は,添付ファイルパートは複数記述されます。ただし,0バイトの場合は,添付ファイルパート内のMIMEボディは空となります。