ここでは,web.xml編集時の注意事項を説明します。
セッションタイムアウトを設定するときの注意事項を示します。
web.xml上の<servlet>タグに含まれる<init-param>,<load-on-startup>,および<security-role-ref>タグの指定は,<servlet-mapping>タグに定義したURLパターンに該当するサーブレットまたはJSPファイルにアクセスした場合にだけ有効になります。このため,マッピング定義なしで直接JSPファイルのパスをURL指定した場合,または/servlet/のプリフィックスでサーブレットクラスをURLに指定して実行した場合は有効になりません。
web.xmlの<security-role>タグを使用する場合は,J2EEサーバモードの実行環境で,サーバ管理コマンドでセキュリティロールのリファレンスを解決する必要があります。
Servlet 2.2仕様およびServlet 2.3仕様の場合,web.xmlで<error-page>タグを指定すると,そのエラーページが表示されるときに返されるステータスコードが200になります。ステータスコード401のエラーページを指定した場合,401のステータスコードが200になってしまうため,Basic認証と併用できません。Basic認証を使用する場合には,ステータスコード401用のエラーページを指定しないでください。
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となります。
<load-on-startup>タグに空文字を指定(<load-on-startup></load-on-startup>または<load-on-startup/>と指定)したサーブレットおよびJSPは,<load-on-startup>タグに2,147,483,647を指定されたものとしてWebモジュールのデプロイ時にロードされます。
<web-app>タグ内に含まれる<display-name>タグは,作業ディレクトリ中のファイル名として使用されます。作業ディレクトリのパス長がプラットフォームで規定されているパス長の上限に達しないようにdisplay-nameを指定してください(デフォルトはWARファイル名を基に付けられます)。作業ディレクトリのパス長の見積もりについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。
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>タグに,「*.」以外の「/」で始まらない文字列を記述した場合
| 先頭に「/」を付けて,正常に実行されます。 |
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認証としてインポートされます。 |
ゲートウェイ指定機能でスキームをhttpsとみなすように設定した場合,Webサーバへのリクエストがhttpであってもhttpsとみなされます。したがって,web.xmlの<transport-guarantee>タグでINTEGRALやCONFIDENTIALを指定しても,httpsのURLへリダイレクトされません。
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 | 静的コンテンツキャッシュ機能の有効/無効を指定します。
| false |
Webアプリケーション単位のメモリサイズ | com.hitachi.software.web.static_content.cache.size | 静的コンテンツキャッシュ機能を有効にした場合,メモリにキャッシュできるサイズをbyte単位で指定します。
| 10485760 |
キャッシュを許可するファイルサイズ | com.hitachi.software.web.static_content.cache.filesize.threshold | 静的コンテンツキャッシュ機能を有効にした場合,キャッシュできるファイルサイズをbyte単位で指定します。
| 524288 |
DDの定義例を次に示します。
<?xml version="1.0" encoding="UTF-8"?> |
定義例では,次の内容が定義されています。
web.xmlの<taglib-location>タグまたはJSPのtaglibディレクティブに指定したタグライブラリ・ディスクリプタ(TLDファイル)のパスが,実際のパスと大文字,小文字が異なっている場合,Windows上では正常に動作しますが,UNIX上ではエラーになります。
Windows上で動作していたユーザプログラムをUNIXに移行する場合は,web.xmlの<taglib-location>タグまたはJSPのtaglibディレクティブに指定したタグライブラリ・ディスクリプタ(TLDファイル)のパスが,実際のパスと大文字・小文字が異なっていないか確認してください。
web.xmlでDOCTYPE宣言に内部サブセットを記述しないでください。J2EE仕様で定義されたDTD/XMLスキーマだけを使用してください。
各プロジェクトのDDではProcessing Instruction,XInclusion,および名前空間接頭辞を記述できません。記述しても,値が正しく読み込まれません。