Tomcat没有自动部署war文件

时间:2011-01-05 13:08:43

标签: java tomcat java-ee 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。 “自动应用程序部署”下的以下引用

  

除了自动   启动时发生的部署   时间,你也可以要求新的   WAR配置文件,WAR   文件或子目录   放入appBase(或者   $ CATALINA_HOME / conf目录/ [引擎名称] / [HOST_NAME]   在XML配置的情况下   文件)目录,而Tomcat是   运行将自动进行   根据规则部署   如上所述。汽车部署者   还将跟踪Web应用程序   以下更改:

     
      
  • WEB-INF / web.xml的更新   文件将触发重新加载Web   应用
  •   
  • WAR的更新   已经扩大的将触发   取消部署(删除了   扩展webapp),然后是a   部署
  •   
  • 对XML的更新   配置文件会触发一个   取消部署(不删除任何部分   扩展目录),然后是   部署相关的网络   应用
  •   

由于上述第2点,文件是否已自动更新?

在server.xml中将Autodeploy设置为true

6 个答案:

答案 0 :(得分:30)

从历史上看,当你刚刚放入一个新的jar时,tomcat从未更新过爆炸目录,至少对我而言。我一直认为这是一个错误,但从来没有调查它,因为有一个简单的解决方案。这两个都应该工作正常:

  • 使用内置管理器应用程序部署war文件。如果您可以使用GUI进行生产管理,那就很好。 注意如果您多次部署此工具曾经存在问题(同样,我从未深入研究过细节),但Tomcat重启工作正常。
  • 停止,删除和删除。停止Tomcat,删除展开的目录,放入新的war文件。
  • 答案 1 :(得分:7)

    添加autoDeploy = true。适合我

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

    答案 2 :(得分:6)

    我通常将server.xml中的autodeploy设置为false。这允许我放弃新的war并重新启动tomcat而不必处理相应的目录。

    答案 3 :(得分:2)

    是的,应该更新展开的目录,但是你不需要停止Tomcat来实现它 - 它将与Tomcat一起运行。您是否可以在更新之间停止Tomcat而再次尝试?

    此外,我使用内置的Manager应用程序,它允许我在域中的任何位置更新war文件而不是root(或者apache或tomcat运行的任何东西)。这非常方便,可以构建到Ant脚本中。

    答案 4 :(得分:1)

    在我的情况下,我命名工件

    ROOT.WAR
    

    但应该是

    ROOT.war
    

    干杯!

    答案 5 :(得分:0)

    当我使用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 stop / start用于避免任何内存泄漏,这些内存泄漏会导致应用程序在多次重新部署后变慢。