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从未更新过爆炸的目录,至少对我而言。 我一直认为这是一个错误,但从来没有调查它,因为有一个简单的解决方案。 这两个都应该工作正常:
添加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停止/启动是为了避免任何内存泄漏,这可能会导致应用程序在多次重新部署后变慢。