Tomcatのサーバとアプリケーションの設定(バージョン5.0以前)

Tomcatの「server.xml」などのアプリケーションの設定メモです。

Webアプリケーションを作る前準備

Jakarta Tomcatに限らず、 J2EEのWebアプリケーションサーバ(サーブレット/JSPコンテナ)は、 URL上の1つのディレクトリパスをWebアプリケーション (Webアプリケーション・コンテキスト)と呼び、 それを構成するファイル(HTML文書、GIF画像、Javaのクラス、XMLファイル等のリソース) 群をひとつの特定のディレクトリの下に配置します。
ここでの作業手順は、Tomcatをインストールした「す」の状態から、 JSPスクリプトを埋め込んだHTML文書を配信できるようにするところまでです。 サーブレットを開発・配備することはできません。 これについては、別の場所で触れることにしたいと思います。

  1. アプリケーションディレクトリ(コンテキスト・ルート・ディレクトリ)を作ります。 標準の位置は $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
    
  2. 新しいアプリケーションを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
    
    となります。
  3. 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"/>
    
  4. このあと、この中に次のような形で各種のリソースを置いて行けば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ファイルを配置する必要があります。

Server Side Java Index Top

(first uploaded 2001/01/19 last updated 2007/01/06, KQ TAURA-URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル