TomcatへのWebアプリケーション配備の3つの方法

方法1:コンテキストXMLファイルを使用する

各アプリケーションに個別のXMLファイルを作成する場合、ファイル名が重要です。なぜならコンテキストパスはファイル名から派生するからです。例えば、Demo1.xmlファイルをconf/Catalina/localhostディレクトリに配置すると、アプリケーションのコンテキストパスはDemo1となり、アクセスURLはhttp://localhost:8080/Demo1になります。

コンテキストファイルの内容は以下の1行です:

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>

docBase属性は必須で、アプリケーションの物理的な場所を定義します。reloadable属性はオプションで、値がtrueの場合、Javaクラスファイルやその他のリソースファイルが追加、削除、更新されるたびにTomcatが検出し、アプリケーションを自動的に再読み込みします。

コンテキストファイルをTomcatの所定のディレクトリに追加すると、Tomcatは自動的にアプリケーションを読み込みます。ファイルを削除すると、Tomcatはアプリケーションを自動的にアンロードします(EclipseやIntelliJ IDEAなどのIDEはこの方法を使用してプロジェクトをデプロイするため、Tomcatのデプロイディレクトリにはプロジェクトのルートディレクトリやリソースファイルは存在せず、IDEのワークスペース内に保持されます)。

方法2:server.xmlにContext要素を追加する

conf/server.xmlファイルのHost要素内にContext要素を追加します:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
      <Context path="/Demo2" docBase="d:/Demo1" reloadable="true"></Context>
</Host>

方法1との違いは、ここではpath属性を定義する必要がある点です。path属性の値はアクセスするプロジェクト名を示し、アクセスURLはhttp://localhost:8080/Demo2になります。

一般的には、server.xmlを編集してコンテキストを管理することは推奨されません。Tomcatの設定ファイルを直接変更するためです。ただし、複数のアプリケーションを同時にテストする必要がある場合、1つのファイルで全てのアプリケーションを管理できるため、この方法が便利なこともあります。

方法3:webappsディレクトリに直接配置する

WARファイルまたはアプリケーションフォルダ全体をTomcatのwebappsディレクトリ(Tomcatのデフォルトデプロイ場所であり、server.xmlで変更可能ですが推奨されません)にコピーします。Tomcatを起動すると、WARファイルは自動的に展開(解凍)され、デプロイ場所にディレクトリが作成されます(MyEclipseはプロジェクトのルートディレクトリをTomcatに直接デプロイするため、Tomcat内にプロジェクトのルートディレクトリやリソースファイルが存在します)。

Tomcatのパラメーター(reloadableなど)を変更しない場合の動作は以下の通りです:

  1. Tomcatの実行中にJSPなどのリソースファイルを変更した場合、再起動せずに変更が反映されます。ただし、クラスファイルを変更した場合は再起動が必要です。
  2. 展開されたフォルダ内のクラスファイルのみを変更し、WARファイル内のファイルを変更しなかった場合、Tomcatを再起動しても変更されたクラスファイルは上書きされません。
  3. Tomcat実行中にWARファイルを削除すると、対応する展開ディレクトリも同時に削除されます。
  4. Javaファイルを変更後に生成したWARファイルでTomcat内の既存のWARファイルを上書きし、Tomcatを再起動すると、元の展開ディレクトリが削除され、新しいWARファイルが再度展開されます。

タグ: Tomcat Webアプリケーション デプロイメント Java Eclipse

7月14日 22:20 投稿