web-dev-qa-db-ja.com

Tomcatがwarファイルを自動展開しない

私は次の手順に従いました

  • Tomcatのシャットダウン
  • 12月1日のタイムスタンプを持つwarファイルを展開しました
  • Tomcatの起動-これにより、展開されたwarファイルの展開ディレクトリが作成されました。
  • Tomcatを停止します
  • 12月3日のタイムスタンプを持つ新しいものでwarファイルを更新しました
  • Tomcatを再起動します

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に設定されています

30
ziggy

少なくとも、私にとって、新しいjarをドロップしただけでは、Tomcatは展開ディレクトリを更新したことがありません。私は常にこれがバグだと思っていましたが、簡単な解決策があるので決して調べませんでした。これらは両方とも正常に機能するはずです。

  • ビルトインマネージャーアプリケーションを使用してwarファイルをデプロイします。実稼働管理にGUIを使用しても問題ない場合は問題ありません。 注意 このツールは、何度もデプロイした場合に問題が発生していましたが(詳細については詳しく説明しませんでした)、Tomcatの再起動は正常に機能しました。
  • 停止、削除、およびドロップ。 Tomcatを停止し、展開されたディレクトリを削除して、新しいwarファイルをドロップします。
  • 30
    DwB

    AutoDeploy = trueを追加します。私のために働く

    <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    
    7
    Mircea Stanciu

    通常、server.xmlの自動デプロイをfalseに設定します。これにより、対応するディレクトリを処理することなく、新しいwarを削除してTomcatを再起動できます。

    6
    Ricardo Marimon

    はい、展開されたディレクトリを更新する必要がありますが、Tomcatを停止する必要はありません。Tomcatが動作していれば動作します。更新の合間にTomcatを停止せずにもう一度試してください。

    また、ビルトインマネージャーアプリケーションを使用して、ルート(またはApacheまたはTomcatが実行されているもの)にならずに、ドメイン内の任意の場所でwarファイルを更新できます。これは非常に便利で、Antスクリプトに組み込むことができます。

    2
    trojanfoe

    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の停止/開始は、数回の再デプロイ後にアプリケーションを遅くする可能性のあるメモリリークを回避するためにあります。

    1
    Panthro

    私の場合、アーティファクトに名前を付けます

    ROOT.WAR
    

    しかし、する必要があります

    ROOT.war
    

    乾杯!

    1
    Andrew