Hitachi

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


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

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

〈この項の構成〉

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

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

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

表5‒2 web.xmlの記述内容とサーバの動作

項番

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) <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,および名前空間接頭辞を記述できません。記述しても,値が正しく読み込まれません。