Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)


付録A.1 Webコンテナが返すエラーステータスコード

クライアントから,存在しないリソースや例外が発生したサーブレットなどにアクセスがあると,Webコンテナはエラーステータスコードを返します。Webコンテナが返すエラーステータスコードと,エラーステータスコードを返す条件を次の表に示します。

表A‒2 Webコンテナが返すエラーステータスコードと条件

エラーステータスコード

エラーステータスコードを返す条件

400 Bad Request

次のどれかに該当する場合,エラーステータスコード400が返ります。

  • FORM認証で使用するログインページとして指定されたリソースに対して,クライアントから直接リクエストを送信し,その結果表示されたログインページからユーザ認証に成功した場合

  • 次の三つの条件をすべて満たしているアクセスの場合

  1. HTTPのバージョンが"HTTP/1.0"のとき

  2. アクセス対象となるサーブレットがjavax.servlet.http.HttpServletを継承しているとき

  3. アクセス時のHTTPメソッドが該当するサーブレットでオーバーライドされていないとき

  • Content-Lengthヘッダの値が2147483647より大きい,または0より小さいリクエストヘッダでアクセスされた場合

  • Content-Lengthヘッダの値が数値以外のリクエストヘッダでアクセスされた場合

  • Content-Lengthヘッダを複数含むリクエストヘッダでアクセスされた場合

  • リクエストURIを正規化できなかった場合

401 Unauthorized

BASIC認証を必要とするリソースに対して,次のようなアクセスがあった場合,エラーステータスコード401が返ります。

  • 不正なユーザ名,またはパスワードでアクセスされた場合

  • 認証情報を含まないでアクセスされた場合(Authorizationヘッダがないアクセス)。

403 Forbidden

次のどれかに該当する場合,エラーステータスコード403が返ります。

  • BASIC認証,またはFORM認証を必要とするリソースに対して,認可できないユーザ名でアクセスされた場合

  • web.xmlで,auth-constraint要素にrole-name要素を指定しないで,すべてのアクセスを許可しないとするリソースにアクセスされた場合※1

  • 静的コンテンツに対して,PUTまたはDELETEメソッドでアクセスされた場合

  • web.xmlの<transport-guarantee>要素で,INTEGRALまたはCONFIDENTIALが設定されているリソースにhttpでアクセスされた場合

404 Not Found

次のどちらかのアクセスがあった場合,エラーステータスコード404が返ります。

  • 存在しないリソースにアクセスされた場合

  • javax.servlet.UnavailableExceptionが発生しているサーブレット,またはJSPファイルにアクセスされた場合※2

405 Method Not Allowed

次の三つの条件をすべて満たしているアクセスの場合,エラーステータスコード405が返ります。

  • HTTPのバージョンが"HTTP/1.1"の場合

  • アクセス対象となるサーブレットがjavax.servlet.http.HttpServletを継承している場合

  • アクセス時のHTTPメソッドが該当するサーブレットでオーバーライドされていない場合

JSPにGET,POST,HEAD,OPTION以外のメソッドでアクセスがあった場合,エラーステータスコード405が返ります※8

412 Precondition Failed

If-Matchヘッダ,またはIf-Unmodified-Sinceヘッダで指定した条件に一致しない静的コンテンツへのアクセスの場合,エラーステータスコード412が返ります。

413 Request Entity Too Large

リクエストボディのサイズが上限値を超えた場合,エラーステータスコード413が返ります。

416 Requested Range Not Satisfiable

次のどれかに当てはまる不正なRangeヘッダの値を使用した静的コンテンツへのアクセスの場合,エラーステータスコード416が返ります。

  • Rangeヘッダの値が"byte"から始まっていない

  • 範囲定義に数字や"-"を使用していない

  • 指定範囲が妥当ではない

500 Internal Server Error

次のどれかに該当する場合,エラーステータスコード500が返ります。

  • 例外が発生するサーブレットまたはJSPファイルにアクセスされた場合※3

  • コンパイルに失敗したJSPファイルにアクセスされた場合

  • 削除された静的コンテンツにアクセスされた場合※4

  • 静的コンテンツへのアクセスでI/Oエラーが発生した場合

  • web.xmlの定義が不正な状態で,<auth-constraint>要素で保護されたリソースにアクセスされた場合※5

501 Not Implemented

静的コンテンツまたはjavax.servlet.http.HttpServletを継承したサーブレットに対して,GET,HEAD,POST,PUT,DELETE,OPTIONS,TRACEメソッド以外のHTTPメソッドでアクセスされた場合,エラーステータスコード501が返ります。

503 Service Unavailable

次のどれかに該当する場合,エラーステータスコード503が返ります。

  • リクエストの実行待ちキューに空きがない場合※6

  • javax.servlet.UnavailableExceptionが発生しているサーブレットまたはJSPファイルにアクセスされた場合※7

  • 終了処理中のWebコンテナに対してアクセスされた場合

  • 予期しないエラーまたは例外によって,異常な状態になったWebアプリケーションにアクセスされた場合

  • Webコンテナサーバで,Webコンテナサーバだけが起動して,Webアプリケーションが起動していない場合に,起動しなかったWebアプリケーションにアクセスされたとき

注※1 Webアプリケーションのバージョンが2.4以降の場合に該当します。

注※2 Webアプリケーションのバージョンが2.4以降の場合で,永久的に利用できないことを示すjavax.servlet.UnavailableExceptionが発生し,サーブレットおよびJSPファイルで例外をcatchしていないときが該当します。

注※3 次のような場合が該当します。

注※4 Webアプリケーションのリロード機能,JSPファイルの再コンパイル機能,またはJ2EEアプリケーションのリロード機能を使用しない場合が該当します。

注※5 web.xmlで<auth-constraint>要素に<role-name>要素が定義され,<login-config>要素が定義されていない場合に該当します。この状態でアプリケーションを開始すると,KDJE39150-Wの警告メッセージがコンソール画面,およびメッセージログに出力されます。

注※6 Webアプリケーション単位の同時実行スレッド数制御,またはURLグループ単位の同時実行スレッド数制御を設定している場合が該当します。

注※7 次のような場合が該当します。

注※8 Webアプリケーションのバージョンが3.1以降の場合が該当します。