方法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など)を変更しない場合の動作は以下の通りです:
- Tomcatの実行中にJSPなどのリソースファイルを変更した場合、再起動せずに変更が反映されます。ただし、クラスファイルを変更した場合は再起動が必要です。
- 展開されたフォルダ内のクラスファイルのみを変更し、WARファイル内のファイルを変更しなかった場合、Tomcatを再起動しても変更されたクラスファイルは上書きされません。
- Tomcat実行中にWARファイルを削除すると、対応する展開ディレクトリも同時に削除されます。
- Javaファイルを変更後に生成したWARファイルでTomcat内の既存のWARファイルを上書きし、Tomcatを再起動すると、元の展開ディレクトリが削除され、新しいWARファイルが再度展開されます。