5.2.4 web.xml編集時の注意事項
ここでは,web.xml編集時の注意事項を説明します。
- 〈この項の構成〉
-
(1) セッションタイムアウトの設定時の注意事項
セッションタイムアウトを設定するときの注意事項を示します。
-
セッションタイムアウトの設定値
セッションタイムアウトを無期限に設定しないでください。無期限に設定した場合,セッション情報を保持する領域が解放されないため,メモリを消費し続けます。
-
web.xmlの<session-timeout>タグの指定
web.xmlの<session-timeout>タグに指定する値の有効範囲は,-35,791,394〜35,791,394です。この範囲内の値を指定してください。
(2) アクセスするURLパターンの定義の注意事項
web.xml上の<servlet>タグに含まれる<init-param>,<load-on-startup>,および<security-role-ref>タグの指定は,<servlet-mapping>タグに定義したURLパターンに該当するサーブレットまたはJSPファイルにアクセスした場合にだけ有効になります。このため,マッピング定義なしで直接JSPファイルのパスをURL指定した場合,または/servlet/のプリフィックスでサーブレットクラスをURLに指定して実行した場合は有効になりません。
(3) セキュリティロール使用時の設定について
web.xmlの<security-role>タグを使用する場合は,J2EEサーバモードの実行環境で,サーバ管理コマンドでセキュリティロールのリファレンスを解決する必要があります。
(4) エラーページ設定時の注意事項
Servlet 2.2仕様およびServlet 2.3仕様の場合,web.xmlで<error-page>タグを指定すると,そのエラーページが表示されるときに返されるステータスコードが200になります。ステータスコード401のエラーページを指定した場合,401のステータスコードが200になってしまうため,Basic認証と併用できません。Basic認証を使用する場合には,ステータスコード401用のエラーページを指定しないでください。
(5) <run-as>タグとWebコンテナの認証の関連について
web.xmlの<servlet>タグ要素に指定する<run-as>タグは,指定されたサーブレットまたはJSPからEnterprise Beanを呼び出すときに使用されるものであり,Webコンテナでの認証とは無関係です。
このため,Webコンテナでの認証結果を参照するためのjavax.servlet.http.HttpServletRequestクラスのisUserInRoleメソッドやgetUserPrincipalメソッドには影響しません。例えば,サーブレットまたはJSPファイルから<run-as>タグに記述したロール名を引数に指定したjavax.servlet.http.HttpServletRequestのisUserInRoleメソッドを呼び出しても,戻り値はfalseとなります。
(6) <load-on-startup>タグ指定時の注意事項
<load-on-startup>タグに空文字を指定(<load-on-startup></load-on-startup>または<load-on-startup/>と指定)したサーブレットおよびJSPは,<load-on-startup>タグに2,147,483,647を指定されたものとしてWebモジュールのデプロイ時にロードされます。
(7) <display-name>タグ編集時の注意事項
<web-app>タグ下に含まれる<display-name>タグは,作業ディレクトリ中のファイル名として使用されます。作業ディレクトリのパス長がプラットフォームで規定されているパス長の上限に達しないようにdisplay-nameを指定してください(デフォルトはWARファイル名を基に付けられます)。作業ディレクトリのパス長の見積もりについては,マニュアル「アプリケーションサーバ システム構築・運用ガイド」の「付録C.1 J2EEサーバの作業ディレクトリ」を参照してください。
(8) web.xmlの記述内容とサーバの動作
Servlet 2.3に対応したJ2EEアプリケーションの場合の,web.xmlの記述内容とJ2EEサーバの動作を次の表に示します。
項番 |
web.xmlの記述内容 |
サーバの動作 |
---|---|---|
1 |
プロパティにwebserver.xml.validate=falseを設定した場合に,DTDの仕様で必須となっているタグを記述しないとき |
WARファイルのインポート時にエラーとなります。 |
2 |
<filter>タグに含まれる<filter-name>タグ要素を空要素にして,<filter-mapping>タグに含まれる<filter-name>タグ要素も空要素にした場合 |
実行されません。 |
3 |
<listener>タグに含まれる<listener-class>タグ要素を空要素にした場合 |
<listener>タグの指定を無視して正常に実行されます。 |
4 |
プロパティにwebserver.xml.validate=falseを設定した場合に,DTDの仕様で一つだけ指定が許されているタグを複数記述したとき |
WARファイルのインポート時にエラーになります。 |
5 |
要素が同じ<filter-mapping>タグを複数記述した場合 |
doFilterメソッドは1回だけ呼び出されます。 |
6 |
親タグ,その下に要素としてキーとなるタグ,およびそのほかの情報を持つタグを複数記述した場合に,キーとなるタグの要素が同じでそのほかの情報が異なるとき |
最初に記述された親タグを有効にします。 |
7 |
プロパティにwebserver.xml.validate=falseを設定している場合に,DTDの仕様で規定されていない順序でタグを記述したとき |
WARファイルのインポート時にエラーになります。 |
8 |
<jsp-file>タグに「/」で始まらない文字列を記述した場合 |
先頭に「/」を付けて,正常に実行されます。 |
9 |
次に示す<url-pattern>タグに,「*.」以外の「/」で始まらない文字列を記述した場合
|
先頭に「/」を付けて,正常に実行されます。 |
10 |
<mime-mapping>タグに含まれる<extension>タグ要素に空文字を記述した場合 |
WARファイルのインポート時にエラーになります。 |
11 |
<mime-mapping>タグに含まれる<mime-type>タグ要素に空文字を記述した場合 |
WARファイルのインポート時にエラーになります。 |
12 |
<error-page>タグに含まれる<error-code>タグ要素に空文字を記述した場合 |
WARファイルのインポート時にエラーになります。 |
13 |
<transport-guarantee>タグに空文字を記述した場合 |
WARファイルのインポート時にエラーになります。 |
14 |
<form-login-page>タグまたは<form-error-page>タグに空文字を記述した場合 |
WARファイルのインポート時に設定が無視されます。 |
15 |
<env-entry-type>タグ,<ejb-ref-type>タグ,または<ejb-ref-type>タグに空文字を設定した場合 |
WARファイルのインポート時にエラーになります。 |
16 |
<security-constraint>タグを設定して<auth-method>タグを省略した場合 |
Basic認証としてインポートされます。 |
(9) ゲートウェイ指定機能を使用する場合の注意事項
ゲートウェイ指定機能でスキームをhttpsと見なすように設定した場合,Webサーバへのリクエストがhttpであってもhttpsとみなされます。したがって,web.xmlの<transport-guarantee>タグでINTEGRALやCONFIDENTIALを指定しても,httpsのURLへリダイレクトされません。
(10) <taglib-location>タグに指定したパスの大文字,小文字が異なる場合の動作
web.xmlの<taglib-location>タグまたはJSPのtaglibディレクティブに指定したタグライブラリ・ディスクリプタ(TLDファイル)のパスが,実際のパスと大文字,小文字が異なっている場合,Windows上では正常に動作しますが,UNIX上ではエラーになります。
Windows上で動作していたユーザプログラムをUNIXに移行する場合は,web.xmlの<taglib-location>タグまたはJSPのtaglibディレクティブに指定したタグライブラリ・ディスクリプタ(TLDファイル)のパスが,実際のパスと大文字・小文字が異なっていないか確認してください。
(11) web.xmlのDOCTYPE宣言の注意事項
web.xmlでDOCTYPE宣言に内部サブセットを記述しないでください。Java EE仕様で定義されたDTD/XMLスキーマだけを使用してください。
(12) DD作成時の注意事項
各プロジェクトのDDではProcessing Instruction,XInclusion,および名前空間接頭辞を記述できません。記述しても,値が正しく読み込まれません。