36.5.2 handleFaultメソッドの処理
handleMessageメソッドについて,trueを返す場合,falseを返す場合,および例外をスローする場合の処理について説明します。
- 〈この項の構成〉
(1) trueを返す場合
handleFaultメソッドがtrueを返す場合,JAX-WSエンジンは現在実行中の方向のままハンドラを処理します。それ以上ハンドラがなければ,メッセージを振り分けます。
応答処理の流れを次の図に示します。
(2) falseを返す場合
handleFaultメソッドがfalseを返す場合,JAX-WSエンジンは現在実行中の方向のまま,以降のハンドラをすべて省略してメッセージを振り分けます。
応答処理でハンドラ2がfalseを返す場合の流れを次の図に示します。
(3) ProtocolExceptionまたはそのサブクラスをスローする場合
handleFaultメソッドがProtocolExceptionまたはそのサブクラスをスローする場合,JAX-WSエンジンは,現在実行中の方向のまま,以降のハンドラをすべて省略して例外をスローします。
応答処理でハンドラ2がProtocolExceptionをスローする場合の流れを次の図に示します。
Webサービス側の場合,JAX-WSエンジンは例外をSOAPフォルトに変換し,もともと保持しているSOAPフォルトを置き換えます。したがって,実際は新たに生成されたフォルトメッセージを送信します。フォルトメッセージの変換については,「10.4.1(2) ランタイム例外のバインディング」を参照してください。
(4) ほかのランタイム例外をスローする場合
handleFaultメソッドがほかのランタイム例外をスローする場合,JAX-WSエンジンは,現在実行中の方向のまま,以降のハンドラをすべて省略してメッセージを振り分けます。
応答処理でハンドラ2がRuntimeExceptionをスローする場合の流れを次の図に示します。
Webサービス側の場合,JAX-WSエンジンは例外をSOAPフォルトに変換し,もともと保持しているSOAPフォルトを置き換えます。したがって,実際には新たに生成されたフォルトメッセージを送信します。フォルトメッセージの変換については,「10.4.1(2) ランタイム例外のバインディング」を参照してください。
Webサービスクライアント側の場合,JAX-WSエンジンは例外をjavax.xml.ws.WebServiceExceptionでラップして,WebServiceExceptionをスローします。