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文件或子目录(或
根据上述规则,在Tomcat运行时,将自动部署$ CATALINA_HOME / conf / [engine_name] / [host_name](如果是XML配置文件)目录。 自动部署程序还将跟踪Web应用程序以进行以下更改:

  • 对WEB-INF / web.xml文件的更新将触发Web应用程序的重新加载
  • 对已扩展的WAR的更新将触发取消部署(删除扩展的webapp),然后部署
  • 对XML配置文件的更新将触发取消部署(不删除任何扩展目录),然后部署关联的Web应用程序

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

autodeploy在server.xml中设置为true

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

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

     

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

    是的,爆炸目录应该更新,但是你不需要停止Tomcat来实现它 – 它将与Tomcat一起运行。 你可以再次尝试它而不停止更新之间的Tomcat吗?

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

    在我的情况下,我命名神器

     ROOT.WAR 

    但应该是

     ROOT.war 

    干杯!

    当我使用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 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 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停止/启动是为了避免任何内存泄漏,这可能会导致应用程序在多次重新部署后变慢。