4.6.5 web.xml編集時の注意事項

ここでは,web.xml編集時の注意事項を説明します。

<この項の構成>
(1) セッションタイムアウトの設定時の注意事項
(2) アクセスするURLパターンの定義の注意事項
(3) セキュリティロール使用時の設定について
(4) エラーページ設定時の注意事項
(5) <run-as>タグとWebコンテナの認証の関連について
(6) <load-on-startup>タグ指定時の注意事項
(7) <display-name>タグ編集時の注意事項
(8) web.xmlの記述内容とサーバの動作
(9) ゲートウェイ指定機能を使用する場合の注意事項
(10) 静的コンテンツキャッシュ機能を使用する場合のDDの定義
(11) <taglib-location>タグに指定したパスの大文字,小文字が異なる場合の動作
(12) web.xmlのDOCTYPE宣言の注意事項
(13) DD作成時の注意事項

(1) セッションタイムアウトの設定時の注意事項

セッションタイムアウトを設定するときの注意事項を示します。

(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ファイル名を基に付けられます)。作業ディレクトリのパス長の見積もりについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。

(8) web.xmlの記述内容とサーバの動作

Servlet 2.3に対応したJ2EEアプリケーションの場合の,web.xmlの記述内容とサーバの動作を次の表に示します。

表4-3 web.xmlの記述内容とサーバの動作(1.4モード)

項番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>タグに,「*.」以外の「/」で始まらない文字列を記述した場合
  • <servlet-mapping>-<url-pattern>
  • <security-constraint>-<web-resource-collection>-<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) 静的コンテンツキャッシュ機能を使用する場合のDDの定義

CosminexusのWebコンテナでは,静的コンテンツをメモリにキャッシュする静的コンテンツキャッシュ機能を使用できます。一度アクセスした静的コンテンツの内容をメモリにキャッシュすることで,二度目以降のアクセス時にファイルシステムへのアクセス回数を減らし,応答速度を向上できます。

静的コンテンツキャッシュ機能を有効にするためには,DD(web.xml)またはWebアプリケーションの属性ファイルに定義を追加します。ここでは,DDに定義する方法を説明します。

DDの定義では,DDの<web-app>タグ内に<context-param>タグを追加して,<context-param>タグ内に<param-name>タグと<param-value>タグを追加します。DDで定義する項目および指定する内容を次に示します。

表4-4 静的コンテンツキャッシュ機能使用時のDDの定義内容

定義する項目<param-name>に指定する要素<param-value>に指定する内容デフォルト値
静的コンテンツキャッシュ機能の有効/無効com.hitachi.software.web.static_content.cache.enabled静的コンテンツキャッシュ機能の有効/無効を指定します。
true
静的コンテンツキャッシュ機能を有効にします。
false
静的コンテンツキャッシュ機能を無効にします。
false
Webアプリケーション単位のメモリサイズcom.hitachi.software.web.static_content.cache.size静的コンテンツキャッシュ機能を有効にした場合,メモリにキャッシュできるサイズをbyte単位で指定します。
  • Webアプリケーション単位で,キャッシュの合計サイズが指定した値を超えた場合は,アクセスされていない時間が最も長いキャッシュから削除されて,キャッシュの合計サイズが設定した値以下になるまでキャッシュの削除を繰り返します。
  • メモリサイズが設定されていないWebアプリケーションでは,そのプロパティに指定した値が用いられます。しかし,メモリサイズが設定されているWebアプリケーションでは,そのプロパティに指定した値は用いられません。
  • 0~2147483647までの整数値で指定します。0を指定した場合は,Webアプリケーション単位でメモリにキャッシュできるサイズに制限を設けません。
  • このプロパティに無効な値が設定された場合,およびキャッシュを許可するファイルサイズで指定した値よりも小さい値の場合,デフォルト値が使用されます。
  • このプロパティに空文字列,または空白文字が設定された場合は,デフォルト値が使用されます。
10485760
キャッシュを許可するファイルサイズcom.hitachi.software.web.static_content.cache.filesize.threshold静的コンテンツキャッシュ機能を有効にした場合,キャッシュできるファイルサイズをbyte単位で指定します。
  • 指定した値を超えるサイズのファイルはキャッシュされません。
  • ファイルサイズが設定されていないWebアプリケーションでは,そのプロパティに指定した値が用いられます。しかし,ファイルサイズが設定されているWebアプリケーションでは,そのプロパティに指定した値は用いられません。
  • 0~2147483647までの整数値で指定します。0を指定した場合は,キャッシュできるファイルのサイズに制限を設けません。
  • プロパティに無効な値が設定された場合,およびWebアプリケーション単位のメモリサイズで指定した値より大きい場合は,デフォルト値が使用されます。
  • このプロパティに空文字列,または空白文字が設定された場合は,デフォルト値が使用されます。
524288
注意
次に示すパラメタは,静的コンテンツキャッシュ機能で使用するため,DDの<context-param>タグ内で任意に使用できません。
  • com.hitachi.software.web.static_content.cache.enabled
  • com.hitachi.software.web.static_content.cache.size
  • com.hitachi.software.web.static_content.cache.filesize.threshold

DDの定義例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>

<web-app>
  <context-param>
     <param-name>
        com.hitachi.software.web.static_content.cache.enabled
     </param-name>-
     <param-value>true</param-value>
  </context-param>

  <context-param>
     <param-name>
        com.hitachi.software.web.static_content.cache.size
     </param-name>
     <param-value>5242880</param-value>
  </context-param>

  <context-param>
     <param-name>
        com.hitachi.software.web.static_content.cache.filesize.threshold
     </param-name>
     <param-value>102400</param-value>
  </context-param>
</web-app>

定義例では,次の内容が定義されています。

(11) <taglib-location>タグに指定したパスの大文字,小文字が異なる場合の動作

web.xmlの<taglib-location>タグまたはJSPのtaglibディレクティブに指定したタグライブラリ・ディスクリプタ(TLDファイル)のパスが,実際のパスと大文字,小文字が異なっている場合,Windows上では正常に動作しますが,UNIX上ではエラーになります。

Windows上で動作していたユーザプログラムをUNIXに移行する場合は,web.xmlの<taglib-location>タグまたはJSPのtaglibディレクティブに指定したタグライブラリ・ディスクリプタ(TLDファイル)のパスが,実際のパスと大文字・小文字が異なっていないか確認してください。

(12) web.xmlのDOCTYPE宣言の注意事項

web.xmlでDOCTYPE宣言に内部サブセットを記述しないでください。J2EE仕様で定義されたDTD/XMLスキーマだけを使用してください。

(13) DD作成時の注意事項

各プロジェクトのDDではProcessing Instruction,XInclusion,および名前空間接頭辞を記述できません。記述しても,値が正しく読み込まれません。