The Apache Tomcat Servlet/JSP Container

The Apache Tomcat 5.5 サーブレット/JSP コンテナ

Apache Logo

リンク

ユーザガイド

リファレンス

Apache Tomcat 開発

The Apache Tomcat 5.5 サーブレット/JSP コンテナ

Tomcat Web アプリケーションの配置

Printer Friendly Version
print-friendly
version
目次
はじめに

配置 (deployment) とは,web アプリケーション (サードパーティの WAR であれ,あなた自身のカスタム web アプリケーションであれ) を Tomcat サーバにインストールするプロセスをさす用語です。

web アプリケーションは Tomcat サーバの中にいくつかの方法で配置できます。

  • 静的配置。web アプリケーションを Tomcat がスタートする前にセットアップします。
  • 動的配置。Tomcat マネージャ web アプリケーションと協力して, または配置済みの web アプリケーションを操作して配置します。

Tomcat マネージャは URL ベースの web アプリケーション配置を可能にするツールです。 Client Deployer と呼ばれるツールもあります。 これは Tomcat マネージャと対話するコマンド・シェル・ベースのスクリプトですが, web アプリケーションを WAR (web application resource) ファイルにパッケージするだけでなく, web アプリケーションをコンパイルし,妥当性を検証する等の付加的な機能を備えています。

インストール作業

web アプリケーションの静的配置を行うためにインストール作業は必要ありません。 なぜならこの機能は Tomcat を箱から出したときから備わっているからです。 Tomcat マネージャの配置機能を利用するときもインストール作業は必要ありませんが, いくつかの設定作業が必要です。詳細は Tomcat マネージャのマニュアルを参照してください。 Tomcat Client Deployer (TCD) を使う場合はインストール作業が必要です。

TCD は Tomcat のコア配布にはパッケージされていませんから, ダウンロード・エリアから別途ダウンロードする必要があります。 ダウンロード対象はふつう jakarta-tomcat-5.5.x-deployer とラベルされています。

TCD は事前に Apache Ant 1.6.2+ が必要です。Java もインストールしておく必要があります。 環境変数 ANT_HOME を,Ant のインストール場所をさすように定義しておきます。 環境変数 JAVA_HOME を,Java のインストール場所をさすように定義しておきます。 さらに,Ant の ant コマンドと Java の javac コンパイラ・コマンドが, あなたのオペレーティング・システムのコマンド・シェルから動作することを確かめておきます。

  1. TCD の配布物をダウンロードします。
  2. TCD パッケージを任意の場所に展開します。 必ずしも Tomcat のインストール場所に展開する必要はありません。
  3. Tomcat Client Deployer を使って配置するを読みます。
コンテキストについて一言

web アプリケーションの配置について語るとき,コンテキスト (Context) の概念を理解する必要があります。コンテキストとは,Tomcat にとって, web アプリケーションの呼び名です。

Tomcat 内のコンテキストを設定するためにはコンテキスト記述子 (Context Descriptor) が必要です。1個のコンテキスト記述子とは,1個のコンテキストに対する Tomcat 関連の設定 (ネーミング・リソースやセッション・マネージャの設定など) からなる, 単なる1本の XML ファイルです。 初期版の Tomcat ではコンテキスト記述子の設定内容はしばしば Tomcat の一次設定ファイル server.xml に格納されていました。 しかし今はこのやりかたは非推奨です (今のところ依然として動作はしますが)。

コンテキスト記述子は,Tomcat がコンテキストの設定方法を知る助けになるだけではありません。 Tomcat マネージャや TDC のような他のツールも, それぞれの役目を正しく遂行するためにしばしばこれらのコンテキスト記述子を使います。

コンテキスト記述子の場所は次のとおりです。

  1. $CATALINA_HOME/conf/[固有名]/[ホスト名]/context.xml
  2. $CATALINA_HOME/webapps/[webアプリ名]/META-INF/context.xml
もしもコンテキスト記述子が Context に用意されていなければ,Tomcat は自動的にコンテキスト記述子を作成し,それを (1) に [webアプリ名].xml というファイル名でおきます。 しかし,手で作成するときは,ファイル名を web アプリケーション名と一致させる必要はありません。 Tomcat はコンテキスト記述子ファイルのなかにあるコンテキスト設定だけしか見ないからです。

Tomcat スタートアップでの配置

もしもあなたが Tomcat マネージャや TCD の利用に興味がないならば, web アプリケーションを静的に Tomcat に配置してから,Tomcat をスタートアップしなければなりません。 このタイプの配置のためにあなたが web アプリケーションを配置する場所は appBase と呼ばれています。 これはホストごとに指定されます。 あなたはこの場所にいわゆる展開済み web アプリケーション (つまり非圧縮のファイル) か,または圧縮された .WAR (web application resource) ファイルを置きます。

ホストの (デフォルトのホストは "localhost" です) appBase 属性が (デフォルトの appBase は "$CATALINA_HOME/webapps" です) 指定する場所に存在する web アプリケーションは,Tomcat のスタートアップ時に配置されます。 ただし,ホストの deployOnStartup 属性が "true" である場合に限ります。

その場合,下記の配置シーケンスが Tomcat のスタートアップ時に起こります。

  1. まずすべてのコンテキスト記述子が配置されます。
  2. 次にどのコンテキスト記述子からも参照されていないところの, 展開済み web アプリケーションが配置されます。 もしも関連する .WAR ファイルが appBase にあって,そちらのほうが展開済み web アプリケーションよりも新しいならば,展開済みのディレクトリが削除され, web アプリが .WAR から改めて配置されます。
  3. .WAR ファイルが配置されます。

重ねて注意しますが,もしも配置された web アプリケーションにコンテキスト記述子がなければ コンテキスト記述子が作成されます。

動作中の Tomcat サーバに配置する

動作中の Tomcat サーバに web アプリケーションを配置できます。

もしもホストの autoDeploy 属性が "true" ならば, ホストは,(たとえば新しい .WAR が appBase にドロップされた場合等) 必要に応じて,動的に web アプリケーションを配置し,更新しようとします。 これが機能するためには,ホストがバックグラウンド処理をイネーブルにしていなければなりません (デフォルトの設定ではそうなっています)。

autoDeploy を "true" にすると,Tomcat が,走ったまま下記を行えるようになります。

  • ホストの appBase にコピーされた .WAR ファイルの配置。
  • ホストの appBase にコピーされた展開済み web アプリケーションの配置。
  • .WAR から配置済みの web アプリケーションに新しい .WAR が与えられた時の配置し直し。 この場合,展開済み web アプリケーションが除去され,.WAR が再び展開されます。 ただし,.WAR を展開しないように,ホストの unpackWARs 属性が "false" に設定されているときは,展開は行われず,単純に圧縮アーカイブのまま配置し直されます。
  • /WEB-INF/web.xml ファイル (もしくは WatchedResource として定義された任意のリソース) が更新された時の web アプリケーションの配置し直し。
  • web アプリケーションを配置したコンテキスト記述子ファイルが更新された時の web アプリケーションの配置し直し。
  • (配置済みの web アプリケーションのコンテキスト・パスに対応するファイル名の) コンテキスト記述子ファイルが $CATALINA_HOME/conf/[固有名]/[ホスト名]/ ディレクトリに追加された時の web アプリケーションの配置し直し。
  • web アプリケーションのドキュメント・ベース (docBase) が削除された時の配備取り消し。 ただし,Windows では,anti-locking 機能 (コンテキスト設定を見よ) が有効になってなければ, 動作中の web アプリケーションのリソースを削除できないことに注意してください。

web アプリケーションの再ロードは,ローダでも設定できることに注意してください。 この場合,ロードされたクラスの変更が追跡されます。

Tomcat マネージャを使って配置する

Tomcat マネージャはそれ自身のマニュアル・ページでカバーされています。

Client Deployer パッケージを使って配置する

最後に,web アプリケーションの配置は Tomcat Client Deployer を使っても達成できます。 これは web アプリケーションを検証し,コンパイルし,.WAR に圧縮し, 本番用または開発用の Tomcat サーバに配備するために使うことができるパッケージです。 注意すべきは,この機能は Tomcat マネージャを使っているということ,したがってターゲットの Tomcat サーバが走っていなければならないということです。

TCD を使うためにはユーザは Apache Ant に慣れていることが前提です。 Apache Ant はスクリプトによるビルド・ツールです。 TCD は1本のビルド・スクリプト [build.xml] にまとめられています。このスクリプトを使うわけです。 Apache Ant についての理解はほどほどで十分です (必要なのは,このページのはじめに挙げたようなインストール作業と, オペレーティング・システムのコマンド・シェルの使用および環境変数の設定への慣れです)。

TCD には Ant のタスクと,配置前に JSP をコンパイルする Jasper ページ・コンパイラが含まれています。 web アプリケーションのコンテキスト記述子の妥当性を検証するタスクも含まれています。 妥当性を検証するタスク (クラス org.apache.catalina.ant.ValidatorTask [lib/catalina-ant.jar に収録]) はただ1個のパラメタを許します: 展開済み web アプリケーションのベース・パス (base path) です。

TCD は入力として展開済み web アプリケーションをとります (使われるプロパティのリストについては下記を見てください)。 web アプリケーションは, コンテキスト記述子を /META-INF/context.xml として含めることができます。 デプロイヤが自動的に配置します。

TCD には下記をターゲットとする1本のすぐに使える Ant スクリプト [build.xml] が含まれています。

  • compile (デフォルト): web アプリケーションをコンパイルし,その妥当性を検証します。 これはスタンドアロンで使えます。Tomcat サーバを走らせる必要はありません。 コンパイルされたアプリケーションは,同じリリースの Tomcat 5.5.x サーバだけで走ります。 他のリリースの Tomcat での動作は保証されません。 なぜなら,Jasper が生成するコードは,サーバの実行時コンポーネントに依存しているからです。 ほかに注意すべきこととして,このターゲットは, web アプリケーションの /WEB-INF/classes フォルダにある Java ソース・ファイルならば何でも自動的にコンパイルしようとします。
  • deploy: web アプリケーションを (コンパイル済みでもそうでなくても) Tomcat サーバに配置します。
  • undeploy: web アプリケーションの配置を取り消します。
  • start: web アプリケーションを開始させます。
  • reload: web アプリケーションをロードし直します。
  • stop: web アプリケーションを停止させます。

配置の設定を変更したいときは,TCD をインストールしたディレクトリに deployer.properties というファイルを作成します。 このファイルに,下記の 名前=値 のペアを1行に1個ずつ書き足します。

ちなみに,あなたは,(TCD が使う) ターゲットの Tomcat マネージャをユーザが正しくセットアップしたことを確認する必要があるでしょう。 正しくセットアップしていない場合,TCD は Tomcat マネージャを認証せず,配置に失敗することになります。 確認の方法については Tomcat マネージャのページを見てください。

  • build: ビルド・フォルダとして,デフォルトでは ${build}/webapp/${path} が使われます。 compile ターゲットの実行終了後,web アプリケーションの .WAR が ${build}/webapp/${path}.war に置かれます。
  • webapp: 展開済み web アプリケーションを置くディレクトリです。 コンパイルされ,妥当性が検証されます。 デフォルトは myapp フォルダです。
  • path: web アプリケーションが配置されるコンテキスト・パスです。 デフォルトは /myapp です。
  • url: 動作中の Tomcat サーバの Tomcat マネージャ web アプリケーションへの絶対 URL です。 web アプリケーションの配置と配置取消しに,この Tomcat マネージャが使われます。 デフォルトでは localhost 上で走っている http://localhost:8080/manager の Tomcat インスタンスにアクセスが試みられます。
  • username: Tomcat マネージャのユーザ名です (ユーザは manager のロールを持っていなければなりません)
  • password: Tomcat マネージャのパスワードです。

Copyright © 1999-2006, Apache Software Foundation