Hitachi

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


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

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

〈この項の構成〉

(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タイプ

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ボディは空となります。