|
Tomcatのサーバとアプリケーションの設定(バージョン5.0以前) |
Tomcatの「server.xml」などのアプリケーションの設定メモです。
Jakarta Tomcatに限らず、
J2EEのWebアプリケーションサーバ(サーブレット/JSPコンテナ)は、
URL上の1つのディレクトリパスをWebアプリケーション
(Webアプリケーション・コンテキスト)と呼び、
それを構成するファイル(HTML文書、GIF画像、Javaのクラス、XMLファイル等のリソース)
群をひとつの特定のディレクトリの下に配置します。
ここでの作業手順は、Tomcatをインストールした「す」の状態から、
JSPスクリプトを埋め込んだHTML文書を配信できるようにするところまでです。
サーブレットを開発・配備することはできません。
これについては、別の場所で触れることにしたいと思います。
- アプリケーションディレクトリ(コンテキスト・ルート・ディレクトリ)を作ります。
標準の位置は $CATALINA_HOME/webapps の下になりますが、その他の位置でも構いません。
例えば、「shitenapp01」というアプリケーションを開発する場合、
標準に従うなら $CATALINA_HOME/webapps/shitenapp01 というディレクトリを作り、
この下にJSPやHTML文書を置きます。
% mkdir $CATALINA_HOME/webapps/shitenapp01
% mkdir $CATALINA_HOME/webapps/shitenapp01/WEB-INF
% mkdir $CATALINA_HOME/webapps/shitenapp01/WEB-INF/classes
% mkdir $CATALINA_HOME/webapps/shitenapp01/WEB-INF/lib
-
新しいアプリケーションをTomcatに認識させるため、
$CATALINA_HOME/conf/Catalina/localhost ディレクトリに、
{アプリケーション名}.xml というXML文書を下のような内容で作成します。
アプリケーション名とは、上の例では「shitenapp01」にあたります。
<Context docBase="/shitenapp01" path="/shitenapp01" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="shitenapp01." suffix=".txt" timestamp="true"/>
</Context>
|
なお、Tomcatを稼動しているときにこのファイルを追加・編集すると、
Tomcatが自動的に検知して新しい設定を反映してくれます。
いわゆる「ホットデプロイ」という機能です。
また、上記で「reloadable="true"」と記述すると、
WEB-INF/classesやWEB-INF/libの下にファイルを追加したり、編集したりすると、
一定時間経って自動的にアプリケーションが再ロードされます。
これは開発環境では便利ですが、運用環境ではサーバの監視処理の負荷の分だけ損なので、
運用環境ではfalseにするとよいでしょう。
またマシンによっては、classファイルなどを運用中に差し替えると、
「ThreadDeath」というエラーが発生して、
Tomcatごと再起動しないといけなくなることが度々あります。
「examples」という、
Tomcatに最初から作られているアプリケーションディレクトリの記述も参考になります。
ここで、「docBase」の設定がアプリケーションディレクトリの位置の指定になります。
その基点が $CATALINA_HOME/webapps なので、上のように「shitenapp01」
とだけ指定すると $CATALINA_HOME/webapps/shitenapp01 の意味になります。
webapps以外の場所をアプリケーションディレクトリにした場合には、
docBaseに絶対パスを指定します。
例えば、
<Context path="/shitenapp01" docBase="/export/home/java/eclipse-projects/shitenapp01" debug="0"
reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="shitenapp01_log." suffix=".txt" timestamp="true" />
</Context>
とすれば、
/export/home/java/eclipse-projects/shitenapp01 がアプリケーションディレクトリとなります。
開発時にはこのような開発者のホームで開発し、
運用するときにwebapps配下にコピーする、というような体制も考えられます。
ただし、Windows 2000/XP環境の場合、
docBaseにはドライブを必ず指定しないといけないようです。
○ C:/usr/java/dev1/shitenapp01
× /usr/java/dev1/shitenapp01
となります。
-
Tomcat自身がWebサーバの場合のポート番号は、
server.xmlで変更できます。次のような箇所を編集することで、
ここではポートを8765に変更しています。
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8765" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
-
このあと、この中に次のような形で各種のリソースを置いて行けばOKです。
ここで$APPROOTはアプリケーションディレクトリ、
つまり上の例では「$CATALINA_HOME/webapps/shitenapp01」を指します。
種類 | 置き場所 |
HTML文書 | $APPROOT/shitenapp01 (※1) |
JSP入りのHTML文書 | $APPROOT (※1) |
画像などのリソース | $APPROOT (※1) |
JSPから呼び出すJavaBeansクラスの.classファイル | $APPROOT/WEB-INF/classes (※2) |
JSPから呼び出すJavaBeansクラスの.classファイルが入ったJARアーカイブ | $APPROOT/WEB-INF/lib |
これで例えば、$CATALINA_HOME/webapps/shitenapp01/index.html は、
URL上は http://localhost:8765/shitenapp01/index.html として見ることができるはずです。
(※1) さらにサブディレクトリを作っても、相対パスで参照できます。
(※2) クラスが「パッケージ修飾」をもつ場合は、このディレクトリを起点として、
パッケージ構造に準拠したサブディレクトリツリーを作り、
正しいサブディレクトリに各.classファイルを配置する必要があります。
(first uploaded 2001/01/19 last updated 2007/01/06, KQ TAURA-URANO398)
|