我按照以下步骤操作
-
关闭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 . 以下引用"Automatic Application Deployment"
除了在启动时发生的自动部署之外,您还可以请求将新的XML配置文件,WAR文件或子目录放入appBase(或$ CATALINA_HOME / conf / [engine_name] / [host_name]中 . 根据上述规则,将自动部署Tomcat运行时的XML配置文件目录 . 自动部署程序还将跟踪Web应用程序以进行以下更改:对WEB-INF / web.xml文件的更新将触发Web应用程序的重新加载对已扩展的WAR的更新将触发取消部署(删除扩展的webapp),然后是部署对XML配置文件的更新将触发取消部署(不删除任何扩展的目录),然后部署关联的Web应用程序
由于上面的第2点,文件是否已自动更新?
autodeploy在server.xml中设置为true
6 回答
从历史上看,当你刚放入一个新 jar 时,tomcat从未更新过爆炸目录,至少对我而言 . 我一直认为这是一个错误,但从来没有调查它,因为有一个简单的解决方案 . 这两个都应该工作正常:
使用内置管理器应用程序部署war文件 . 如果您可以使用GUI进行 生产环境 管理,那就很好 . Note 如果你多次部署这个工具曾经有问题(同样,我从未深入研究过细节),但Tomcat重启工作正常 .
停止,删除和删除 . 停止Tomcat,删除展开的目录,然后放入新的war文件 .
添加autoDeploy = true . 适合我
我通常将server.xml中的autodeploy设置为false . 这允许我放弃新的war并重新启动tomcat而不必处理相应的目录 .
是的,应该更新展开的目录,但是您不需要停止Tomcat来实现它 - 它将与Tomcat一起运行 . 你可以再次尝试它而不停止更新之间的Tomcat吗?
此外,我使用内置的管理器应用程序,它允许我更新域中任何地方的war文件,而不是root(或apache或运行的任何tomcat) . 这非常方便,可以构建到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停止/启动是为了避免任何内存泄漏,这可能会导致应用程序在多次重新部署后变慢 .