6.5.1. HTTPメッセージングエラー制御ハンドラ

本ハンドラでは後続のハンドラで発生した例外及びエラーを補足し、例外(エラー)に応じたログ出力とレスポンスの生成を行う。 また、後続のハンドラでレスポンスボディが設定されていない場合には、HTTPステータスコードに対応したデフォルトのボディをレスポンスに設定する。

本ハンドラでは、以下の処理を行う。

処理の流れは以下のとおり。

../../../../_images/flow9.png

6.5.1.2. モジュール一覧

<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-fw-messaging-http</artifactId>
</dependency>

6.5.1.3. 制約

HTTPレスポンスハンドラ より後ろに配置すること
本ハンドラで生成した HttpResponseHTTPレスポンスハンドラ が処理する。 このため、本ハンドラを HTTPレスポンスハンドラ より後ろに設定する必要がある。

6.5.1.4. 例外の種類に応じたログ出力処理とレスポンスの生成

nablarch.fw.NoMoreHandlerException
ログレベル:INFO
レスポンス:404
説明:リクエストを処理すべきハンドラが存在しなかったことを意味するため、証跡ログとして記録する。 また、処理すべき action class が存在しなかったことを意味するため、HTTPステータスコードが 404 のレスポンスを生成する。
nablarch.fw.web.HttpErrorResponse
ログレベル:ログ出力なし
レスポンス:HttpErrorResponse#getResponse()
説明:後続のハンドラで業務例外(バリデーションなどを行った結果の例外)が発生したことを意味するので、ログ出力は行わない。
nablarch.fw.Result.Error
ログレベル:設定による
レスポンス:Error#getStatusCode()
説明:nablarch.fw.Result.Errorのログ出力について を参照
nablarch.core.message.ApplicationExceptionnablarch.fw.messaging.MessagingException
ログレベル:-
レスポンス:400
説明:クライアントからのリクエストが不正であることを示す例外のため、HTTPステータスコードが 400 のレスポンスを生成する。
上記以外の例外及びエラー
ログレベル:FATAL
レスポンス:500
説明:上記に該当しない例外及びエラーの場合には、障害扱いとしてログ出力を行う。 また、予期しない例外やエラーであるため、レスポンスは 500 としている。

6.5.1.4.1. nablarch.fw.Result.Errorのログ出力について

後続のハンドラで発生した例外が、 Error の場合はログ出力を行うかどうかは、 writeFailureLogPattern に設定した値によって変わる。 このプロパティには正規表現が設定でき、その正規表現が Error#getStatusCode() とマッチした場合に FATAL レベルのログを出力する。