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