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

[目次][用語][索引][前へ][次へ]

10.2.1 JAX-WSエンジンの動作とサポート範囲

Webサービス側とWebサービスクライアント側でやり取りされるSOAPメッセージは,JAX-WSエンジンの動作によってマーシャル/アンマーシャルされます。

ここでは,Webサービス側およびWebサービスクライアント側のJAX-WSエンジンとサポート範囲について説明します。

<この項の構成>
(1) Webサービス側のJAX-WSエンジンの動作とサポート範囲
(2) Webサービスクライアント側のJAX-WSエンジンの動作とサポート範囲
(3) 配列またはjava.util.Listを利用する場合の注意事項

(1) Webサービス側のJAX-WSエンジンの動作とサポート範囲

Webサービス側のJAX-WSエンジンの動作について説明し,Webサービスを利用するWebサービスクライアントのサポート範囲について示します。

(a) Webサービス側のJAX-WSエンジンの動作

Webサービス側のJAX-WSエンジンは,次に示すような流れで動作します。

ディスカバリとディスパッチについては,「10.2.2 ディスカバリとディスパッチ」を参照してください。

また,Webサービス側のJAX-WSエンジンは,HTTP GETメソッドによってWebサービスのメタデータであるWSDLを要求された場合,WARファイルにWSDLがなければ自動的に生成して返します。メタデータの発行については,「10.6 メタデータの発行」を参照してください。

なお,POSTでもGETでもないHTTPメソッドでWebサービス側のJAX-WSエンジンが呼び出された場合,HTTPステータスコード 405 Method Not Allowedを返します。

(b) Webサービス側のJAX-WSエンジンのサポート範囲

Webサービス側のJAX-WSエンジンとWebサービスクライアントの関係について説明します。

Webサービス実装クラスの場合

Webサービス実装クラスの場合の,Webサービス側のJAX-WSエンジンとWebサービスクライアントの関係を次に示します。

図10-1 Webサービス側のJAX-WSエンジンとWebサービスクライアントの関係(Webサービス実装クラスの場合)

[図データ]

Webサービス側のJAX-WSエンジンが受信できるメッセージ,および接続元のWebサービスクライアントの条件を次に示します。

プロバイダ実装クラスの場合

プロバイダ実装クラスの場合の,Webサービス側のJAX-WSエンジンとWebサービスクライアントの関係を次に示します。

図10-2 Webサービス側のJAX-WSエンジンとWebサービスクライアントの関係(プロバイダ実装クラスの場合)

[図データ]

Webサービス側のJAX-WSエンジンが受信できるメッセージ,および接続元のWebサービスクライアントの条件を次に示します。

(2) Webサービスクライアント側のJAX-WSエンジンの動作とサポート範囲

Webサービスクライアント側のJAX-WSエンジンの動作について説明し,Webサービスクライアントから利用できるWebサービスのサポート範囲について示します。

(a) Webサービスクライアント側のJAX-WSエンジンの動作

Webサービスクライアント側のJAX-WSエンジンは,次に示すような流れで動作します。

Webサービスクライアントは,生成されたクラスまたはJAX-WS APIを介してJAX-WSエンジンにアクセスするため,JAX-WSエンジンを意識する必要はありません。

また,生成されたクラスおよびJAX-WS APIは,JAX-WS 2.2仕様に基づくため,Webサービスクライアントの実装者は,標準仕様以外のインタフェースを考慮する必要はありません。Webサービスの呼び出し(SOAP要求メッセージの送信),およびSOAP応答メッセージおよびフォルトメッセージの受信は,標準仕様のインタフェースのサポート範囲内で行われます。

(b) Webサービスクライアント側のJAX-WSエンジンのサポート範囲

Webサービスクライアント側のJAX-WSエンジンとWebサービスの関係について説明します。

スタブベースのWebサービスクライアントの場合

スタブベースのWebサービスクライアントの場合の,Webサービスクライアント側のJAX-WSエンジンとWebサービスの関係を次に示します。

図10-3 Webサービスクライアント側のJAX-WSエンジンとWebサービスの関係(スタブベースの場合)

[図データ]

Webサービスクライアント側のJAX-WSエンジンが呼び出せるWebサービスの条件を次に示します。

ディスパッチベースのWebサービスクライアントの場合

ディスパッチベースのWebサービスクライアントの場合の,Webサービスクライアント側のJAX-WSエンジンとWebサービスの関係を次に示します。

図10-4 Webサービスクライアント側のJAX-WSエンジンとWebサービスの関係(ディスパッチベースの場合)

[図データ]

Webサービスクライアント側のJAX-WSエンジンが呼び出せるWebサービスの条件を次に示します。

(3) 配列またはjava.util.Listを利用する場合の注意事項

SOAPメッセージを送信する場合,配列java.util.Listオブジェクトの要素数が0で空の状態と,nullである状態は区別されないので,注意してください。

10.2.1(3)(a) SOAPメッセージを送信する場合」および「10.2.1(3)(b) SOAPメッセージを受信する場合」では,JAX-WSエンジンの動作について説明します。また,特にWeb サービス側もWeb サービスクライアント側もApplication ServerのJAX-WS 機能を使用する場合の動作について「10.2.1(3)(c) Webサービス側もWebサービスクライアント側もApplication ServerのJAX-WS機能を使用する場合」で説明します。

説明は次のメソッドを例にします。

@WebMethod
public List<String> test( List<Integer> param )
(a) SOAPメッセージを送信する場合

Webサービスクライアントの実装クラスが上記のメソッドを次のように呼び出した場合のリクエストメッセージについて説明します。

この場合に,Webサービスクライアント側のJAX-WSエンジンが送信するリクエストメッセージの抜粋を次に示します。

<test/>

どちらの条件でメソッドを呼び出した場合も,paramパラメタに対応する要素はリクエストメッセージには出現しません。Webサービスの実装クラスが戻り値を返す場合のレスポンスメッセージについても同様です。

(b) SOAPメッセージを受信する場合

次の表に示す条件のどれかが満たされている場合,「10.2.1(3)(a) SOAPメッセージを送信する場合」で説明したメッセージを受信したWebサービスクライアントやWebサービスの実装クラスは,要素数が0で空の状態である,配列やjava.util.Listの具象クラスのオブジェクトを受け取ります。

表10-2 空の配列またはjava.util.Listの具象クラスのオブジェクトを受け取る条件

項番 条件
1 Webサービスクライアントの実装クラスでjava.util.Listオブジェクトを操作する場合
2 WSDLを起点として開発したWebサービスの実装クラスでjava.util.Listオブジェクトを操作する場合
3 SEIを起点として開発したWebサービスの実装クラスで,WSDLのオペレーションに対応するメソッド(WebMethodアノテーションでアノテートされたメソッド)の引数に直接出現する配列やjava.util.Listを操作する場合

なお,SEIを起点として開発したWebサービス実装クラスで,WSDLのオペレーションに対応するメソッドの引数に出現するJavaBeansクラスが持つ配列やjava.util.Listのプロパティは,そのJavaBeansクラスの実装に依存します。プロパティに対応する要素がリクエストメッセージにない場合,JavaBeansクラスは,nullである配列やjava.util.Listの具象クラスのオブジェクトを受け取ります。

(c) Webサービス側もWebサービスクライアント側もApplication ServerのJAX-WS機能を使用する場合

Application ServerのJAX-WSエンジンの動作は,「10.2.1(3)(a) SOAPメッセージを送信する場合」および「10.2.1(3)(b) SOAPメッセージを受信する場合」で説明したとおりです。特にWebサービスクライアントおよびWebサービスの両方がApplication Server上にある場合,表10-2に示す条件を満たすWebサービスクライアントの実装クラスやWebサービスの実装クラスで,WebサービスクライアントおよびWebサービスのどちらか一方が配列やjava.util.Listオブジェクトとしてnullを送信しても,もう一方は要素数が0である配列やjava.util.Listの具象クラスを受信するので,注意してください。