36.5 ハンドラチェインの編成と実行順序
ハンドラチェインは,論理ハンドラがSOAPハンドラに先行するように編成されます。論理ハンドラ同士,およびSOAPハンドラ同士の順序は,ハンドラチェインの設定に含まれる順序に従います。
ハンドラチェインの編成の例を次に示します。
JAX-WSエンジンでは,この図に示すように,次の順序でハンドラが実行されます。
- アウトバウンドのメッセージの場合:
-
L1→L2→L3→S1→S2→S3→S4→S5→S6
- インバウンドのメッセージの場合:
-
S6→S5→S4→S3→S2→S1→L3→L2→L1
アウトバウンドのメッセージに対しては,最初のハンドラからハンドラチェインの順序に,インバウンドのメッセージに対しては,最後のハンドラからハンドラチェインの順序とは逆順に実行されます。
ただし,ハンドラによって例外がスローされた場合,またはhandleMessageメソッドまたはhandleFaultメソッドによってfalseが返された場合は,ハンドラ処理の方向が変わります。
ここでは,handleMessageメソッド,handleFaultメソッド,およびcloseメソッドごとに処理についてそれぞれ説明します。