Revised: 26th/Apr./2008; Since: 25th/Nov./2002
Tomcat は Sun Microsystems の Servlet 仕様、JSP 仕様の reference implementation です。すなわち、Tomcat に準拠する製品が Servlet/JSP サポートを謳えるのです。逆に言うと、Tomcat 上で動作するアプリケーションは Servlet/JSP 仕様に準拠している必要があります。Servlet 仕様には、コーディングの規格だけでなく、それをアプリケーション・サーバで稼動させるためのディレクトリ構成も決められています。ウェブ・アプリケーションは特定のディレクトリ階層を持っていなければならないのです。
*.html, *.jsp, etc.
- (X)HTML、
CSS、画像、JavaScript、JSPなどの、クライアントから見えるコンテンツは、ドキュメント・ルート直下に置く。HTTP
サーバの場合と同様、任意のサブ・ディレクトリを作っても良い。/WEB-INF/web.xml -
デプロイメント・デスクリプタ (DD: Deployment
Descriptor)。サーブレットなどのコンポーネントの構成ファイル。利用可能なサーブレットのリスト、初期化パラメタ、セキュリティ設定、クライアントからのアクセス・パス(URLパターン)など、当該ウェブ・アプリケーションの設定を行う。/WEB-INF/classes/ -
このディレクトリ配下に、当該ウェブ・アプリケーションに属する Java
のクラス・ファイル、利用するリソースを格納する。パッケージ化している場合は、このディレクトリ配下に対応するサブ・ディレクトリ階層を作ることになる。com.mycompany.mypackage.MyServlet
ならば、ドキュメント・ルート配下の /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class
となる。/WEB-INF/lib/ - JAR (Java
ARchive) ファイルを格納する。JDBC ドライバやサードパーティ提供のパッケージは、専らここに格納することになるだろう。ドキュメント・ルートはどこに作ってもかまいません。例えば、 C:\java\DocRoot などのように作り、その配下に上記のディレクトリ構造を作ります。
![]() |
図:C:\java\DocRoot\WEB-INF\classes |
web.xmlweb.xmlはドキュメントルート/WEB-INF/web.xmlに配置します。
![]() |
図:WEB-INF/web.xml |
|---|
次の例は、"sample.war"のweb.xmlです。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Hello, World Application</display-name>
<description>
This is a simple web application with a source code organization
based on the recommendations of the Application Developer's Guide.
</description>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>mypackage.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
server.xml以下、Tomcatのインストール・ディレクトリを${CATALINA_HOME}と表記することにします。
Tomcatの構成ファイルはserver.xmlです。server.xmlは"${CATASLINA_HOME}/conf/server.xml"にあります。このファイルには、基盤側の設定を記述します。we.xmlは、当該WARを開発した業務開発者が作成します。一方、server.xmlは、基盤開発者が、そのWARをどのようにデプロイしたいか、どのURLで参照させるかという、基盤的な設定を記述します。
server.xmlをテキスト・エディタで開いてみます。編集した場合はTomcatの再起動が必要です。
![]() |
図:${CATALINA_HOME}/server.xml |
|---|
要素Hostがヴァーチャル・ホストです。要素Engineの子要素で、1つ以上任意の個数が許されます。そのうち一つの要素Hostは、属性nameに、要素Engineの属性defaultHostと同じ値を持つ必要があります。デフォルトでは、localhostがそれに当たります。
<Server>
:
<Service>
:
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
:
</Host>
</Engine>
</Service>
</Server>
ヴァーチャル・ホストを増やしたい場合は、要素Hostを増やします。一つのヴァーチャルホストに、ドキュメント・ベースを増やしたい場合は、そのHost要素の配下に要素Contextを記述します。任意のパス配下のWARを任意のコンテキストパスで参照できるようになります。