Tomcat部署 - Tomcat如何检测战争中的变化?

时间:2014-01-07 19:51:15

标签: tomcat web-deployment

我们有一个tomcat部署,我们正在部署一个名为app.war的战争。在/opt/tomcat/webapps目录中,您会看到:

/opt/tomcat/webapps/foo.war
/opt/tomcat/webapps/foo
/opt/tomcat/webapps/host-manager
/opt/tomcat/webapps/jmx-console
...

您可以看到Tomcat将foo.war部署到foo目录。

我想如果我们在foo.war目录中放置一个新的webapps,Tomcat会检查这是否已更改,删除旧的foo目录,然后取消foo.war进入foo

我们有一个失败的自动部署脚本,部署脚本关闭Tomcat,将foo.war复制到/opt/tomcat/webapps并重新启动Tomcat。但是,Tomcat从未将/opt/tomcat/webapps/foo目录替换为新foo.war的内容。手动删除/opt/tomcat/webapps/foo允许Tomcat创建一个包含所有新文件的新foo目录。

部署脚本假设要删除/opt/tomcatwebapps/foo,但由于脚本中没有发生错误。我们现在修复了这个bug。但是,该脚本之前已在部署中使用过,我们从未遇到过此问题,因此我假设Tomcat能够检测到更改并部署新的foo.war

因此,Tomcat会检测war文件何时更改。如果是这样,它是如何做到的?部署脚本触及war文件以更新时间戳以帮助进行此检测,因此它不能成为时间戳问题。

1 个答案:

答案 0 :(得分:2)

如果将foo.war复制到webapps中,tomcat将重新部署您的应用程序。检查catalina.out以获取日志。

在部署之前不要关闭Tomcat。在eclipse或netbeans中修改源代码,创建war文件然后部署,如果你使用ant或maven,你可以使用它们进行部署。