Tomcat メモ

コンテキストの設定

一昔前 (〜4.x?) までは server.xml に context の定義をしていたが、 今どき (5.x〜?) は アプリケーションごとにファイルを用意することで コンテキストの設定が可能である。

個別のファイルを用意するというだけで、話は簡単である。 tomcat/conf/Catalina/localhost/ 以下に、contextname.xml を用意する。 そのファイルには、昔 server.xml に書いていたような内容を書けばよい。

例)
<Context path="/contextname"
  reloadable="false"
  docBase="/some/where/contextname/webapp"
  workDir="/some/where/contextname/work"
  >
  <Logger
    className="org.apache.catalina.logger.SystemOutLogger"
    verbosity="4"
    timestamp="true"
  />
</Context>

server.xml は tomcat 全体に影響するファイルなので、編集するのは実は恐い。 それだけでも、アプリケーションごとにファイルを分けることにはメリットがある。

Apache 2.2.x と連携

Apache 2.2.x では、Tomcat と連携するのは非常に簡単だ。 まず、Apache 側で、proxy-ajp を使用するように仕込んでおく必要がある。 たとえば、以下のような感じである。

% ./configure --prefix=/usr/local/apache --enable-mods-shared=most \
  --enable-proxy --enable-proxy-ajp

あとは httpd.conf にコンテキストを書いて飛ばすだけだ。

<Location /contextname/>
  ProxyPass ajp://localhost:8009/contextname/
</Location>

Tomcat 側では、このコンテキスト (contextname) で アプリケーションが上がっていればよい。

バージョンと準拠仕様

古い情報がなくなりつつあるので、メモしておく。

  3.2.x : Servlet API 2.2 / JSP 1.1
  3.3.x : Servlet API 2.2 / JSP 1.1
  4.0.x : Servlet API 2.3 / JSP 1.2
  4.1.x : Servlet API 2.3 / JSP 1.2
  5.5.x : Servlet API 2.4 / JSP 2.0
  6.0.x : Servlet API 2.5 / JSP 2.1

よほどの事情がない限り、あまりに古いのは使わないことを推奨って感じ。

スレッド数

Apache 連携時の Tomcat 側の Thread 数の設定。 Connector port="8009" の属性を増やせばよい感じである (5.5.25 で実験) 。

    <Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

    <Connector port="8009"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

のように調整する。

アイコンの設定

デフォルトでは、例の猫のアイコンが favicon として設定される。 こいつはマズいぜ、という場合には ROOT アプリケーションの設定で変更できる。

tomcat を展開したところに webapps/ROOT/ があるので、 この中の favicon.ico を変更すればよい。

Tomcat マネージャ

どのバージョンからかわからないが、少なくとも 5.5.xx では Web インタフェイスで管理を行うための manager アプリケーションが同梱されている。 「Tomcat Manager」というらしい。

Tomcat Manager では、 JavaVM の情報やメモリ使用状況などのサーバの状態確認や、 アプリケーションの状態確認、停止・起動、アンデプロイ、 果ては アプリケーション (war) のデプロイまでできる。 開発中やイントラ使用のサーバの管理としては、便利だろう。

これを使用するために、管理用ユーザの設定をしておく必要がある。 ユーザの設定は conf/tomcat-users.xml で行う。

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <user username="johnQ" password="himitsu" roles="manager"/>
</tomcat-users>

最小のサンプルは上記のような具合か。 要は、「manager」という名前のロールを設定し、 ユーザ名とパスワードに対してそのロールを割り当てるだけである。 パスワードを平文でダダ書きするので、ファイルの permission には注意が必要だ。

セッション永続化をしない設定

デフォルトの挙動では、Tomcat 自体やアプリケーションを停止する際に、 生きているセッションがあれば保存され、次回起動時に再生される。

この挙動が気に入らない場合は、以下の方法で機能を無効にすることができる。

  • コンテキストの設定ファイルで、永続化用のファイル名として空文字列を与える。

これだけだ。具体例も書いておこう。

  <Context path="/webapp" reloadable="false" docBase="/some/where">
    <Manager pathname="" />
  </Context>

Tomcat 6 でしか試していない。 マニュアルにも記載されているので、別に黒魔法というわけではない。

参考:マニュアル

[$Revision: 1.4 $ $Date: 2011.05.21 07:42:38 $]
[EOF]