Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。

web.xml

ここでは、サーブレット2.4仕様で規定されているweb.xmlについて解説します。

実行環境
  • ・WindowsXP Home Edition
  • ・Tomcat 5.0.18
  • ・J2SDK 1.4.2_04

web.xmlの概要

サーブレット2.4仕様によるとWebアプリケーションにはその動作を規定する配備記述子(Deployment Descriptor)を指定する必要があり、配備記述子はweb.xmlに記載する必要があるとされています。web.xmlにはサーブレット定義、セッション定義、認証設定、ウェルカム・エラーページ設定などWebアプリケーションの動作を規定する設定を行います。

Tomcatではweb.xmlは$CATALINA_HOME\confディレクトリ配下、または各コンテキストディレクトリ\WEB-INFディレクトリ配下に設置します。$CATALINA_HOME\confディレクトリ配下のweb.xmlはデフォルトで用意されており、すべてのコンテキスト(Webアプリケーション)に適用されます。各コンテキストディレクトリ\WEB-INFディレクトリ配下のweb.xmlは各コンテキストごとの動作に適用されます。

web.xmlの設定例

web.xmlの設定例について解説します。Javaの道:Tomcat(プログラム配置・実行)でもweb.xmlの設定を解説していますため、必要な場合はそちらも参照してください。

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web 
        Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- (1)DTD宣言の設定 -->

<web-app>
    <!-- (2)servletタグの設定 -->
    <servlet>
        <servlet-name>ShowDate</servlet-name>
        <servlet-class>ShowDateServlett</servlet-class>
    </servlet>
    <!-- (3)servlet-mappingタグの設定 -->
    <servlet-mapping>
        <servlet-name>ShowDate</servlet-name>
        <url-pattern>/SDate</url-pattern>
    </servlet-mapping>
    <!-- (4)security-constraintタグの設定 -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Basic Authentication</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>
    <!-- (5)login-configタグの設定 -->
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>UserDatabaseRealm</realm-name>
    </login-config>
</web-app>
  1. (1)web.xmlの構文はDTDファイルにより定義されてるため、DTD宣言を行います。
  2. (2)<servlet>タグではサーブレットクラスの名称を定義します。ここで定義された名称は他のタグから参照されます。
  3. (3)<servlet-mapping>タグはURLからサーブレットにアクセスする際のURLパターンを定義します。定義されたURLパターンのアクセスがあった場合、該当するサーブレットを実行します。該当するサーブレットの指定には<servlet>タグで定義したサーブレットクラス名称を使用します。ここでは、URLパターンに/SDateが含まれる場合、ShowDateServletクラスが実行される設定をしています。
  4. (4)<security-constraint>タグではコンテキストに適用される認証の設定をします。ここでは、認証がコンテキストのすべてのリソース(/*)に適用され、adminロールを持ったIDのみ認証の対象となる設定をしています。
  5. (5)<login-config>タグでは認証時に使用する認証方式とレルム方式を設定します。ここでは、認証方式としてBASIC認証を使用し、 ID、パスワード、ロールの管理にはUserDatabaseレルムを使用する設定をしています。

web.xmlの設定タグ

以下にweb.xmlに設定できるタグを記載します。web.xmlで記載できるタグは非常に多いため、トップレベルのタグのみ解説します。サブ要素、タグの属性についてはサーブレット仕様書を参照してください。

サーブレット仕様書:http://www.cresc.co.jp/tech/java/Servlet_Specifications/servlet_3-0_about.htm

<web-app>タグ

内容 web.xmlで最上位のタグです。web.xmlで一つのみ存在します。
要素の数 1つのみ
サブ要素 <description>, <display-name>, <icon>, <distributable>, <context-param>, <filter>, <filter-mapping>, <listener>, <servlet>, <servlet-mapping>, <session-config>, <mime-mapping>, <welcome-file-list>, <error-page>, <jsp-config>, <security-constraint>, <login-config>, <security-role>, <env-entry>, <ejb-ref>, <ejb-local-ref>, <service-ref>, <resource-ref>, <resource-env-ref>, <message-destination-ref>, <message-destination>, <locale-encoding-mapping-list>

<description>タグ

内容 コンテキストの説明を記載します。
要素の数 0または1
サブ要素 無し

<display-name>タグ

内容 GUIツールで表示されるコンテキストの名前を指定します。
要素の数 0または1
サブ要素 無し

<icon>タグ

内容 GUIツールで表示される画像を指定します。
要素の数 0または1
サブ要素 <small-icon>, <large-icon>

<distributable>タグ

内容 コンテキストが分散処理が可能なように作成されているかを表します。
要素の数 0または1
サブ要素 無し

<context-param>タグ

内容 コンテキストの初期化パラメータを指定できます。サーブレット、JSPからパラメータで設定した値を参照できます。
要素の数 0以上
サブ要素 無し

<filter>タグ

内容 クライアントとの送受信データをフィルタし、圧縮、データ変換など様々な処理を行います。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <filter-name>, <filter-class>, <init-param>

<filter-mapping>タグ

内容 どの送受信データにフィルタ処理を適用するか指定します。適用はURLパターンか、サーブレット名で指定できます。
要素の数 0以上
サブ要素 <filter-name>, <url-pattern>, <servlet-name>, <dispatcher>

<listener>タグ

内容 何らかのイベントにより動作するlistenerクラスの説明を記載します。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <listener-class>

<servlet>タグ

内容 初期化パラメータ、メモリロードのタイミングなどサーブレットクラスに対する振る舞いを指定します。ここで指定されたサーブレットクラスの名称はweb.xmlの他のタグから参照されます。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <servlet-name>, <servlet-class>, <jsp-file>, <init-param>, <load-on-startup>, <run-as>, <security-role-ref>
詳細解説 Javaの道:Tomcat(プログラム配置・実行)

<servlet-mapping>タグ

内容 URLでアクセスする際のサーブレットクラスの名称を指定します。
要素の数 0以上
サブ要素 <servlet-name>, <url-pattern>
詳細解説 Javaの道:Tomcat(プログラム配置・実行)

<session-config>タグ

内容 コンテキストのセッション保持時間を指定します。
要素の数 0または1
サブ要素 <session-timeout>

<mime-mapping>タグ

内容 ファイル拡張子とMIMEタイプのマッピングを設定します。ブラウザは送られてきたMIMEタイプにより処理するアプリケーション(動画再生、PDFリーダーなど)を判断します。
要素の数 0以上
サブ要素 <extension>, <mime-type>

<welcome-file-list>タグ

内容 URLでファイル名を指定しないアクセスがあった場合に表示されるファイル(index.html, index.jspなど)を指定します。コンテキストのルートディレクトリが指定された時だけでなく、サブディレクトリが指定された時にも適用されます。
要素の数 0または1
サブ要素 <welcome-file>

<error-page>タグ

内容 HTTPエラーコード、Java例外クラスに対応したエラーページを設定します。
要素の数 0以上
サブ要素 <error-code>, <exception-type>, <location>

<jsp-config>タグ

内容 JSPの振る舞いを指定します。JSPタグライブラリを使用する場合はここで、タグライブラリの定義ファイル(拡張子.tld)を指定します。
要素の数 0以上
サブ要素 <taglib>, <jsp-property-group>

<security-constraint>タグ

内容 コンテナに認証を付与したい場合に使用します。認証の対象となるリソース、認証を許可するロール、SSLなどのデータ保護を指定します。
要素の数 0以上
サブ要素 <display-name>, <web-resource-collection>, <auth-constraint>, <user-data-constraint>
詳細解説 Javaの道:Tomcat(BASIC認証)
Javaの道:Tomcat(FORM認証)
Javaの道:Tomcat(JDBCレルムによるFORM認証)

<login-config>タグ

内容 コンテナに認証を付与する場合に使用します。BASIC認証・FORM認証などの認証方式、メモリレルム・JDBCレルムなどのレルム方式を指定します。
要素の数 0または1
サブ要素 <auth-method>, <realm-name>, <form-login-config>
詳細解説 Javaの道:Tomcat(BASIC認証)
Javaの道:Tomcat(FORM認証)
Javaの道:Tomcat(JDBCレルムによるFORM認証)

<security-role>タグ

内容 認証で使用するロールを定義します。
要素の数 0以上
サブ要素 <description>, <realm-name>

<env-entry>タグ

内容 JNDIパラメータを指定します。アプリケーションからJNDIルックアップなどを使用し、パラメータを参照できます。
要素の数 0以上
サブ要素 <description>, <env-entry-name>, <env-entry-type>, <env-entry-value>

<ejb-ref>タグ

内容 HomeエンタープライズBeansへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <ejb-ref-name>, <ejb-ref-type>, <home>, <remote>, <ejb-link>

<ejb-local-ref>タグ

内容 LocalHomeエンタープライズBeansへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <ejb-ref-name>, <ejb-ref-type>, <local-home>, <local>, <ejb-link>

<service-ref>タグ

内容 Webサービスへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <service-ref-name>, <service-interface>, <wsdl-file>, <jaxrpc-mapping-file>, <service-qname>, <port-component-ref>, <handler>

<resource-ref>タグ

内容 JNDIリソースへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <res-ref-name>, <res-type>, <res-auth>, <res-sharing-scope>
詳細解説 Javaの道:Tomcat(JDBC接続)

<resource-env-ref>タグ

内容 Managerツールなど管理用オブジェクトへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <resource-env-ref-name>, <resource-env-ref-type>

<message-destination-ref>タグ

内容 メッセージデスティネーションへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <message-destination-ref-name>, <message-destination-type>, <message-destination-usage>, <message-destination-link>

<message-destination>タグ

内容 メッセージデスティネーションの名称を設定します。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <message-destination-name>

<locale-encoding-mapping-list>タグ

内容 ロケール(jaなど)とエンコーディング方法(eucなど)のマッピングを設定します。
要素の数 0以上
サブ要素 <locale-encoding-mapping>

16web.xml