Section2: Webアプリケーションの構造と配備

Webアプリケーションのディレクトリ構成
要素 説明
コンテキストルート Webアプリケーションのルートディレクトリ
META-INF WARファイルの作成に使うツールのバージョンなどの情報が格納される(MANIFEST.MF)。外部からはアクセス出来ない。
WEB-INF クラスファイルや設定ファイルを格納する。外部からはアクセス出来ない。
classes Javaのクラスファイルを格納する。
lib 使用するライブラリを格納する。ここに格納されたライブラリには自動的にクラスパスが通る。
*.jar ライブラリ。
META-INF JARファイルの作成に使うツールのバージョンなどの情報が格納される(MANIFEST.MF)。
tags カスタムタグ関連ファイルを格納する。
*.tag タグファイル(JSP)。tags以下のサブディレクトリに配置してもよい。
*.tagx タグファイル(XML形式のJSP)。tags以下のサブディレクトリに配置してもよい。
tags カスタムタグ関連ファイルを格納する。
*.tag タグファイル(JSP)。tags以下のサブディレクトリに配置してもよい。
*.tagx タグファイル(XML形式のJSP)。tags以下のサブディレクトリに配置してもよい。
web.xml Webアプリケーションの設定ファイル。
web.xmlの要素
web.xmlに記述可能なタグについて、タグ名、多重度、タグの内容について答えよ。
タグの多重度(そのタグを何個記述できるか)については、以下のように定義する。
多重度説明
1必ず1つだけ記述する必要があるタグ。複数書くことはできない。
*0個以上記述可能。書かなくてもよいし、複数書いてもよい。
+1個以上記述可能。必ず1つは書かなければならず、複数書いてもよい。
?0個または1個記述可能。書いても書かなくてもよい。複数は書けない。
n..mn個以上m個以下で記述可能。
タグ多重度説明
web-app1ルートタグ。
distributable*クラスタリングされたサーブレットコンテナ上で実行可能であることを宣言。空要素。
context-param*コンテキスト初期化パラメータの定義。
param-name1パラメータ名。
param-value1パラメータの値。
filter*フィルタの定義。
filter-name1フィルタ名。
filter-class1フィルタクラスの完全修飾名。
init-param*初期化パラメータの定義。
param-name1パラメータ名。
param-value1パラメータの値。
filter-mapping*フィルタのマッピング定義。
filter-name1filterタグ内で定義したフィルタ名。このタグより前にfilterタグで定義されている名前を指定する必要がある。
url-pattern | servlet-name+フィルタを適用するURLパターン、またはサーブレット名。
dispatcher0..4どのタイミングでフィルタを適用するかを、REQUEST、FORWARD、INCLUDE、ERRORの4つから指定する。省略時はREQUESTがデフォルトとして適用される。
listener*リスナの定義。
listener-class1リスナクラスの完全修飾名。
servlet*サーブレットの定義。
servlet-name1サーブレット名。
servlet-class | jsp-file1サーブレットクラスの完全修飾名。またはJSPファイルのパス。
init-param*サーブレット初期化パラメータの定義。
param-name1パラメータ名。
param-value1パラメータの値。
load-on-startup?コンテナ起動時にサーブレットをインスタンス化する場合に設定するタグ。値に数値が0以上の整数を記述した場合、値が小さい数から順にインスタンス化される。負の整数を記述した場合はコンテナ起動時にインスタンス化されない。(タグを設定しない場合と同じ)
run-as?サーブレットを実行するロールを指定。
role-name1security-roleタグで指定したロール名を指定。
security-role-ref*このサーブレット内で使用するセキュリティロールの別名を定義する。
role-name1セキュリティーロールの別名。
role-link?security-roleタグで指定したロール名。省略時はコンテナが適切なロール名を自動的にマッピングする。
servlet-mapping*サーブレットのマッピング定義。
servlet-name1サーブレット名。このタグより前にservletタグで定義されている名前を指定する必要がある。
url-pattern+サーブレットが処理するURLのパターン。指定方法は4種類。完全一致(/test)、前方一致(/test/*)、拡張子指定(*.do)。デフォルトサーブレット指定(/)。適用の優先順位もこの順番。拡張子指定では、先頭にスラッシュを入れるとエラー。どのサーブレットにも処理されない場合にデフォルトサーブレットが処理を行う。
session-config*セッションに関する設定。
session-timeout?セッションタイムアウトの時間を分で指定。0以下の値を指定するとタイムアウトしない。省略時のデフォルト値はコンテナ依存。(Tomcatの場合30分)
mime-mapping*MIMEタイプのマッピングを定義。
extension1拡張子。
mime-type1拡張子に対応付けるMIMEタイプ。
welcome-file-list*ウェルカムファイルの定義。
welcome-file+ウエルカムファイル名。定義した順番にウェルカムファイルが検索される。
error-page*エラーページの定義。
error-code | exception-type1このエラーページに遷移させるエラーコード(例:404)、または例外クラスの完全修飾名。
location1遷移先エラーページのパス。先頭に必ずスラッシュを入れる
jsp-config*JSPに関する設定。
taglib*taglibのURIとtldファイルのパスをマッピングする。
taglib-uri1taglibのURI。
taglib-location1tldファイルのパス。
jsp-property-group*複数のJSPグループに対して共通のプロパティを設定。
url-pattern+JSPファイルのパターンを指定(*.jspなど)。
el-ignored?EL式を無視するかどうか。初期値はfalse。
page-encoding? 文字エンコーディングの指定。
scripting-invalid?スクリプトレットを無視するかどうか。デフォルトはfalse。
is-xml?JSPドキュメント(XML形式のJSP)であるかどうか。デフォルトはfalse。
include-prelude*JSPの先頭にインクルードするファイルを指定。
include-coda*JSPの末尾にインクルードするファイルを指定。
deferred-syntax-allowed-as-literal?文字シーケンス #{} を文字列リテラルとして使用してよいかどうか。デフォルトはfalse。
trim-directive-whitespaces?ディレクティブが宣言された行は空白行として出力されるが、その空白行を削除するかどうか。デフォルトはfalse。
security-constraint*セキュリティ制約に関する設定。
web-resource-collection+セキュリティ制約を課すリソース情報の定義。
web-resource-name1このセキュリティ制約を課すリソース集合の名前。
url-pattern+URLパターン。* を指定することが可能。
http-method*制約を課すHTTPのメソッドを指定する。省略時は全てのメソッドを制限する。指定されなかったメソッドは制約なしにアクセスできることに注意。(GETのみを指定した場合、POSTでは制約なしにアクセスできる。)
auth-constraint?アクセス許可に関する制約。
role-name*アクセスを許可するロール名。
user-data-constraint?通信方法に関する制約。
transport-guarantee1保護レベルの指定。NONE、INTEGRAL(完全性)、CONFIDENTIAL(機密性)が指定可能。[Tomcat6.0では、NONE以外の場合SSL通信を要求する。]
login-config*認証方式に関する設定。
security-role*セキュリティロールの定義。
role-name1アクセス制御に使用するロール名を指定。* での指定も可能。ここで指定するロール名は、サーブレットコンテナで設定されているロール名でなければならない。(Tomcatの場合、tomcat-user.xmlに設定する)
env-entry*環境エントリの参照を定義する。
env-entry-name1環境エントリ名を指定。java:comp/env からの相対のJNDI ENC名として使用される。(test を指定した場合、 java:comp/env/test というJNDI ENC名で値を取得できる。)
env-entry-type?環境エントリの型を完全修飾名で指定。指定できるのはプリミティブ型のラッパークラスおよびString。
env-entry-value1環境エントリの値。
ejb-ref*EJBのリモート呼び出しに使用する参照を定義する。
ejb-ref-name1EJB名を指定。java:comp/env からの相対のJNDI ENC名として使用される。(ejb/test を指定した場合、 java:comp/ejb/test というJNDI ENC名でEJBを取得できる。)
ejb-ref-type1Session または Entity を指定。
home1Homeインターフェースの完全修飾名。
remote1Remoteインターフェースの完全修飾名。
ejb-link?ejb.xml中でejb-nameで定義されたEJB名を指定。
ejb-local-ref*EJBのローカル呼び出しに使用する参照を定義する。
ejb-ref-name1EJB名を指定。java:comp/env からの相対のJNDI ENC名として使用される。(ejb/test を指定した場合、 java:comp/ejb/test というJNDI ENC名でEJBを取得できる。)
ejb-ref-type1Session または Entity を指定。
local-home1LocalHomeインタフェースの完全修飾名。
local1Localインターフェースの完全修飾名。
ejb-link?ejb.xml中でejb-nameで定義されたEJB名を指定。
resource-ref*リソース参照を定義。主にJDBCデータソースの取得などに用いられる。
res-ref-name1リソース名を指定。java:comp/env からの相対のJNDI ENC名として使用される。(jdbc/test を指定した場合、 java:comp/jdbc/test というJNDI ENC名でリソースを取得できる。)
res-type1リソースの型の完全修飾名。
res-auth1このリソースに対するアクセス認証の方法。Application または Container が指定可能。
res-sharing-scope?このリソースを共有できるようにするかどうか。Shareable または Unshareable が指定可能。省略時のデフォルトは Shareable。
resource-env-ref*リソース環境への参照を定義。任意のオブジェクトを取得可能。(経緯としては、JMSのQueueオブジェクトを参照するためにServlet2.3でこの要素が追加されたらしい)
resource-env-ref-name1リソース環境名を指定。java:comp/env からの相対のJNDI ENC名として使用される。(jms/test を指定した場合、 java:comp/jms/test というJNDI ENC名でリソース環境を取得できる。)
resource-env-ref-type1リソース環境の完全修飾名。
  • 仕様ではweb-appタグ直下のタグは順不同。その他のタグは記述順序が決められている。(ただし、実際には順序が違っていても問題なく動作する場合が多いようだ)
  • 仕様ではweb-appタグ直下のタグは多重度が全て*。(しかし、実際には複数書くとエラーとなるタグもある。Tomcat6.0ではjsp-configタグを複数書くとエラーになった。)
  • 以下のタグおよびその子タグは試験範囲外とみなし、上の表に記載していない。
    • description
    • display-name
    • icon
    • service-ref
    • message-destination-ref
    • message-destination
    • locale-encoding-mapping-list
inserted by FC2 system