Cosminexus システム構築ガイド

[目次][用語][索引][前へ][次へ]

8.6.2 エラーページのカスタマイズの設定

ここでは,エラーページのカスタマイズの設定について説明します。

<この項の構成>
(1) 概要
(2) 設定方法
(3) 設定例

(1) 概要

存在しないリソースへのアクセスなどのエラーが発生したときに,エラーステータスコードが表示されたエラーページの代わりにユーザが作成したエラーページをクライアントに表示させることができます。インプロセスHTTPサーバによるエラーページのカスタマイズを利用することで,特定のステータスコードに対応するエラーページのカスタマイズや,リクエストURLに対応するエラーページのカスタマイズをWebコンテナ単位にまとめて制御できます。また,次に示すようなWebアプリケーションによるエラーページのカスタマイズが実行できない場合でも,エラーページをカスタマイズできます。

インプロセスHTTPサーバが返すエラーステータスコードを次の表に示します。

表8-1 インプロセスHTTPサーバが返すエラーステータスコード

エラーステータスコード 説明句 エラーの発生条件
400 Bad Request
  • リクエストのHTTPバージョンが1.1であり,Hostヘッダがない。
  • リクエストのHostヘッダのポート番号が不正である。
  • リクエストヘッダのサイズが上限値を超えた。
  • リクエストヘッダの数が上限値を超えた。
  • リクエストURIが不正である。
  • リクエストのContent-Lengthヘッダの値が2,147,483,647より大きい,または0より小さい。
  • リクエストのContent-Lengthヘッダの値が数値以外である。
  • リクエストのContent-Lengthヘッダが複数指定されている。
  • リクエストラインのHTTPバージョンがサポートされていない。
405 Method Not Allowed
  • 許可しないHTTPメソッドによってアクセスされた。
413 Request Entity Too Large
  • リクエストボディのサイズが上限値を超えた。
414 Request-URI Too Long
  • リクエストラインの長さが上限値を超えた。
500 Internal Server Error
  • リダイレクト機能によってステータスコード200でファイルを返す際に,ファイルの読み込みに失敗した。
501 Not Implemented
  • リクエストのtransfer-encodingヘッダの値がサポートされていない。
503 Service Unavailable
  • 流量制御の上限を超えてリクエスト処理を実行しようとした。

インプロセスHTTPサーバによるエラーページのカスタマイズを実行する場合,javax.servlet.http.HttpServletResponseインタフェースのsendErrorメソッドを使用してレスポンスのステータスコードを設定する必要があります。なお,setStatusメソッドを使用した場合(JSPでsetStatusメソッドを使用した場合など),インプロセスHTTPサーバによるカスタマイズが実行されないことがあります。ただし,sendErrorメソッドを使用しても,Webアプリケーションが次に示すどちらかの条件に該当する場合,インプロセスHTTPサーバによるエラーページのカスタマイズは実行されません。

(2) 設定方法

エラーページのカスタマイズは,簡易構築定義ファイルで設定します。論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,次のパラメタを設定してください。

(3) 設定例

エラーページのカスタマイズの設定例を次に示します。

 
:
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.list</param-name>
  <param-value>ERR_CUSTOM_1,ERR_CUSTOM_2</param-value>
</param>
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.ERR_CUSTOM_1.status</param-name>
  <param-value>404</param-value>
</param>
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.ERR_CUSTOM_1.file</param-name>
  <param-value>C:/data/404.html</param-value>
</param>
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.ERR_CUSTOM_1.file.content_type</param-name>
  <param-value>text/html; charset=ISO-8859-1</param-value>
</param>
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.ERR_CUSTOM_2.status</param-name>
  <param-value>503</param-value>
</param>
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.ERR_CUSTOM_2.redirect_url</param-name>
  <param-value>http://host1/503.html</param-value>
</param>
<param>
  <param-name>webserver.connector.inprocess_http.error_custom.ERR_CUSTOM_2.request_url</param-name>
  <param-value>/dir1/*</param-value>
</param>
:
 

この設定例では,エラーページのカスタマイズ定義名として,「ERR_CUSTOM_1」と「ERR_CUSTOM_2」を使用しています。「ERR_CUSTOM_1」では,レスポンスのステータスコードが「404」の場合には,「C:/data/404.html」をクライアントに返します。Content-Typeヘッダの値は,「text/html; charset=ISO-8859-1」を使用します。また,「ERR_CUSTOM_2」では,リクエストが「/dir1/」から始まるURLで,レスポンスのステータスコードが「503」の場合に,「http://host1/503.html」にリダイレクトします。