私は次の手順に従いました
Tomcatを再起動したときに、以前に展開されたフォルダー内の既存のファイルが更新されないことがわかりました。 warファイルを更新しても、関連するjspクラスファイルは更新されませんか?
ドキュメントを見て、これを見つけました http://Tomcat.Apache.org/Tomcat-5.5-doc/config/Host.html 。 「自動アプリケーション展開」の下の次の引用
起動時に発生する自動展開に加えて、appBaseにドロップされる新しいXML構成ファイル、WARファイル、またはサブディレクトリを要求することもできます(または
$ CATALINA_HOME/conf/[engine_name]/[Host_name] XML構成ファイルの場合)Tomcatの実行中のディレクトリは、上記のルールに従って自動的にデプロイされます。自動デプロイヤは、次の変更についてWebアプリケーションも追跡します。
- WEB-INF/web.xmlファイルを更新すると、Webアプリケーションのリロードがトリガーされます
- 展開されたWARを更新すると、展開解除がトリガーされ(展開されたwebappが削除されます)、その後に展開が行われます
- XML構成ファイルを更新すると、展開されたディレクトリが削除されずにアンデプロイがトリガーされ、その後に関連するWebアプリケーションがデプロイされます
上記のポイント2の結果として、ファイルが自動的に更新されるべきではありませんか?
Server.xmlでAutodeployがtrueに設定されています
少なくとも、私にとって、新しいjarをドロップしただけでは、Tomcatは展開ディレクトリを更新したことがありません。私は常にこれがバグだと思っていましたが、簡単な解決策があるので決して調べませんでした。これらは両方とも正常に機能するはずです。
AutoDeploy = trueを追加します。私のために働く
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
通常、server.xmlの自動デプロイをfalseに設定します。これにより、対応するディレクトリを処理することなく、新しいwarを削除してTomcatを再起動できます。
はい、展開されたディレクトリを更新する必要がありますが、Tomcatを停止する必要はありません。Tomcatが動作していれば動作します。更新の合間にTomcatを停止せずにもう一度試してください。
また、ビルトインマネージャーアプリケーションを使用して、ルート(またはApacheまたはTomcatが実行されているもの)にならずに、ドメイン内の任意の場所でwarファイルを更新できます。これは非常に便利で、Antスクリプトに組み込むことができます。
Mavenを使用してUbuntu内のTomcatでビルドを生成すると、次のスクリプトが作成されます。
install_wars.sh
次のコンテンツ:
mvn clean install
service Tomcat7 stop
find /var/lib/Tomcat7/webapps/ -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \;
find . -name *.war -exec cp {} /var/lib/Tomcat7/webapps/ \;
service Tomcat7 start
それに応じて、パスおよびmavenコマンドを変更することができます。
Tomcatの停止/開始は、数回の再デプロイ後にアプリケーションを遅くする可能性のあるメモリリークを回避するためにあります。
私の場合、アーティファクトに名前を付けます
ROOT.WAR
しかし、する必要があります
ROOT.war
乾杯!