Hitachi

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


5.2.5 Servlet 2.4以降で追加,変更された仕様についての注意事項(web.xml)

Servlet 2.4以降で追加および変更された仕様を持つweb.xmlをアプリケーションサーバ上で使用する場合の注意事項を示します。Servlet 2.4以降の仕様については,該当するServletの仕様書を参照してください。

〈この項の構成〉

(1) Servlet 2.4以降の仕様でサポートされないweb.xmlの要素

アプリケーションサーバでは,次に示すServlet 2.4以降の仕様のweb.xmlの要素は定義できません。定義した場合,デプロイ時にエラーになります。

(2) <security-constraint>タグの設定

Servlet 2.4以降の仕様では,web.xmlの<security-constraint>タグに特別な指定をした場合の動作について追記されています。

アプリケーションサーバでは,Webアプリケーションのバージョンに関係なく,次の動作をします。

(3) <security-constraint>タグの複数定義

Servlet 2.4以降の仕様では,web.xmlの<security-constraint>タグを複数定義した場合の動作について追記されています。

アプリケーションサーバ上で<security-constraint>タグを複数定義した場合の動作を,Servlet 2.4以降およびServlet 2.3に分けて示します。

Servlet 2.4以降

web.xmlに<security-constraint>タグを複数定義した場合,アクセス制御の対象となる<security-constraint>タグは,Servletの仕様書に記述された規則に従い選択されます。

Servlet 2.3

web.xmlに定義された<security-constraint>タグを,ファイルの上部に記述されたものから順に確認し,リクエストのURI,およびHTTPメソッドとマッチする<security-constraint>タグを使用してアクセス制御します。<http-method>タグを定義していない場合,すべてのHTTPメソッドを対象とします。

(4) <url-pattern>の改行コード

Servlet 2.4以降の仕様では,web.xmlに記述するURLパターンに改行コードを含む場合の動作について追記されています。

アプリケーションサーバでは,Webアプリケーションのバージョンに関係なく,KDJE39304-Wの警告メッセージが出力されます。ただし,エラーにはならないでアプリケーションは開始されます。また,該当するマッピングは無視されます。

なお,web.xmlでこのような動作をするタグは,<servlet-mapping>タグ,<filter-mapping>タグ,<jsp-property-group>タグ,および<web-resource-collection>タグと各タグに含まれるサブクラスの<url-pattern>タグです。

(5) 指定したエラーページが表示されたレスポンスのステータスコード

Servlet 2.4以降の仕様に対応したWebアプリケーションでは,web.xmlによって表示するエラーページを指定した場合でも,エラーが発生した時点のレスポンスのステータスコードがクライアントに送信されます。

また,Servlet 2.2仕様およびServlet 2.3仕様に対応したアプリケーションでは,ステータスコード200がクライアントに送信されます。

(6) Webコンテナ単位でのエラーページのカスタマイズ

Servlet 2.4以降の仕様に対応したアプリケーションでは,web.xmlで指定したエラーページを表示させる場合,エラーページはカスタマイズされません。また,同じステータスコードに対してカスタマイズしたエラーページを指定した場合,Webアプリケーションで問題が発生し,web.xmlで指定したエラーページの出力に失敗したときだけ,カスタマイズが有効となります。

エラーページのカスタマイズについては,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.18 エラーページのカスタマイズ」を参照してください。

(7) リダイレクトによるエラーページの生成

Servlet 2.4以降の仕様に対応したアプリケーションでは,web.xmlで指定したエラーページが表示されたあとのステータスコードが,エラーページの生成を委任するエラーステータスコードと一致すると,Webサーバによって生成されるエラーページが有効となります。このとき,web.xmlで指定したエラーページの内容はWebサーバに転送されたあとに破棄されます。

web.xmlで指定したエラーページでレスポンスのステータスコードを200に変更することで,web.xmlで指定したエラーページを有効にできます。

(8) フィルタ機能を使用する場合の定義

Servlet 2.4以降の仕様に対応したWebアプリケーションでは,web.xmlの<filter-mapping>タグを定義するとき,サブ要素として<dispatcher>タグを記述することで,リクエストのフォワード時,インクルード時,およびweb.xmlに記述したエラーページへの転送時にフィルタを動作させることができます。

JSPでは,pageディレクティブのerrorPage属性を使用することで,JSPでの例外発生時にエラーページを出力できます。ただし,このときに実行されるリクエストの転送はフォワードです。フィルタを適用する場合に<dispatcher>タグへ必要となる定義は「ERROR」ではなく,「FORWARD」となります。