Since: Nov./13th/2005
Tomcat はアプリケーションサーバ(Web コンテナ)です。アプリケーションは、WAR (Web Archive) という単位で作成して、Tomcat に導入します。この導入は、一般に配備(デプロイ)と呼ばれています。Tomcat では、バッチタイプのデプロイツール (TCD - Tomcat Client Deployer) が追加提供されていますが、ここでは手で導入してみます。
Tomcat にデプロイするアプリケーションは、任意の場所に置くことができます。この場所は、そのアプリケーションのドキュメント・ルートと呼ばれます。アプリケーションは WAR と呼ばれる形式のディレクトリ階層を持ちます。
{ドキュメントルート} | +--*.html, *.jsp, etc. | +--./WEB-INF/web.xml | +--./WEB-INF/classes/ | +--./WEB-INF/lib/
*.html
, *.jsp
, etc../WEB-INF/web.xml
./WEB-INF/classes/
WEB-INF/lib/
配下の JAR に含まれないクラスファイル。パッケージを用いている場合は、このパスをルートとしてサブディレクトリを切る。./WEB-INF/lib/
WEB-INF/classes/
のほうが優先的。ここにコピーしたクラスや JAR は、当該アプリケーションからはパスが通っているように見えます。追加で CLASSPATH に追加したりする必要はありません。
WAR の WEB-INF/classes/
, WEB-INF/lib/
配下のものは、当該 WAR 以外からは見えません。複数の WAR からみえるようにしたい場合は、次のいずれかにコピーします。
${CATALINA_HOME} | +--./common/lib/ | +--./shared/lib/
$CATALINA_HOME/common/lib
$CATALINA_HOME/shared/lib
これらはクラスローダーの探索順序/スコープにしたがって分けられています。クラス探索の順序は次のようになります。
./WEB-INF/classes
./WEB-INF/lib/*.jar
${CATALINA_HOME}/common/classes
${CATALINA_HOME}/common/endorsed/*.jar
${CATALINA_HOME}/common/i18n/*.jar
${CATALINA_HOME}/common/lib/*.jar
${CATALINA_BASE}/shared/classes
${CATALINA_BASE}/shared/lib/*.jar
Tomcat が前提としているクラスローダー階層:
Bootstrap <-- コアパッケージ、拡張機能機構 | System <-- CLASSPATH配下 | Common <-- JSP, Servlet, JNDIなど / \ Catalina Shared <-- 共通ユーティリティ / \ Webapp1 Webapp2 ... <-- WAR 毎の探索経路
SEO | [PR] !uO z[y[WJ Cu | ||