Hitachi

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


36.5.2 handleFaultメソッドの処理

handleMessageメソッドについて,trueを返す場合,falseを返す場合,および例外をスローする場合の処理について説明します。

〈この項の構成〉

(1) trueを返す場合

handleFaultメソッドがtrueを返す場合,JAX-WSエンジンは現在実行中の方向のままハンドラを処理します。それ以上ハンドラがなければ,メッセージを振り分けます。

応答処理の流れを次の図に示します。

図36‒12 handleFaultでtrueを返す場合の処理(応答)

[図データ]

(2) falseを返す場合

handleFaultメソッドがfalseを返す場合,JAX-WSエンジンは現在実行中の方向のまま,以降のハンドラをすべて省略してメッセージを振り分けます。

応答処理でハンドラ2がfalseを返す場合の流れを次の図に示します。

図36‒13 handleFaultでfalseを返す場合の処理(応答)

[図データ]

(3) ProtocolExceptionまたはそのサブクラスをスローする場合

handleFaultメソッドがProtocolExceptionまたはそのサブクラスをスローする場合,JAX-WSエンジンは,現在実行中の方向のまま,以降のハンドラをすべて省略して例外をスローします。

応答処理でハンドラ2がProtocolExceptionをスローする場合の流れを次の図に示します。

図36‒14 handleFaultでProtocolExceptionを返す場合の処理(応答)

[図データ]

Webサービス側の場合,JAX-WSエンジンは例外をSOAPフォルトに変換し,もともと保持しているSOAPフォルトを置き換えます。したがって,実際は新たに生成されたフォルトメッセージを送信します。フォルトメッセージの変換については,「10.4.1(2) ランタイム例外のバインディング」を参照してください。

(4) ほかのランタイム例外をスローする場合

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をスローします。