37.1.2 非同期通信
- 〈この項の構成〉
(1) 非同期通信の流れ
アドレッシング機能を使用した非同期通信の場合,WebサービスクライアントはWebサービスにあるサービスメソッドを呼び出すリクエストメッセージを送信したあと,Webサービスから結果のレスポンスメッセージを受信しないで処理を終了します。Webサービスは,レスポンスメッセージをほかのWebサービスに対して送信します。
非同期通信の流れを次に示します。
(2) 非同期通信の設定方法
非同期通信を使用するには,アドレッシング・ヘッダのwsa:ReplyTo/wsa:Address要素やwsa:FaultTo/wsa:Address要素に,レスポンスメッセージを送信するWebサービスのURLを設定します。
次の条件の場合に,アドレッシング・ヘッダに設定する内容の例を示します。
-
WebサービスのURI
http://localhost/addressing/AddNumbersImplService
-
Webサービスを呼び出す際のAction値
http://sample.com/input
-
Webサービスが正常終了した際の応答メッセージ送信先URL
http://localhost/responseserver/ResponseServerImplService
-
Webサービスが異常終了した際の応答メッセージ送信先URL
http://localhost/responseserver/FaultServerImplService
-
このメッセージを表すユニークなID
uuid:b19439fa-7a29-4045-93d9-56d6a2183afd
<To xmlns="http://www.w3.org/2005/08/addressing"> http://localhost/addressing/AddNumbersImplService </To> <Action xmlns="http://www.w3.org/2005/08/addressing"> http://sample.com/input </Action> <ReplyTo xmlns="http://www.w3.org/2005/08/addressing"> <Address> http://localhost/responseserver/ResponseServerImplService </Address> </ReplyTo> <FaultTo xmlns="http://www.w3.org/2005/08/addressing"> <Address> http://localhost/responseserver/FaultServerImplService </Address> </FaultTo> <MessageID xmlns="http://www.w3.org/2005/08/addressing"> uuid:b19439fa-7a29-4045-93d9-56d6a2183afd </MessageID>
(3) 非同期通信の注意事項
非同期通信を使用するときの注意事項について説明します。
-
Webサービスがレスポンスメッセージの送信に失敗しても,Webサービスクライアントにはエラーは返りません。
-
アドレッシング・ヘッダのwsa:ReplyTo/wsa:Address要素やwsa:FaultTo/wsa:Address要素に,wsa:To要素に設定したWebサービスと同じURLを設定した場合,レスポンスメッセージの送信元と送信先が同じになり,通信が無限ループになるおそれがあります。
-
Webサービス側のJAX-WSエンジンは,リクエストメッセージとしてフォルトメッセージを受信した場合,サーバエラー(HTTPコード:500)として処理します。そのため,フォルトメッセージをリクエストメッセージとして受信するWebサービスは作成できません。
-
プロキシを経由している場合,非同期通信は使用できません。非同期通信を使用する場合,レスポンスメッセージはプロキシを経由しないで,ほかのWebサービスに送信してください。