我们有一个tomcat部署,我们正在部署一场名为app.war
的战争。在/opt/tomcat/webapps
目录中看到:Tomcat部署 - Tomcat如何检测战争中的变化?
/opt/tomcat/webapps/foo.war
/opt/tomcat/webapps/foo
/opt/tomcat/webapps/host-manager
/opt/tomcat/webapps/jmx-console
...
你可以看到Tomcat的部署foo.war
到foo
目录。
我想如果我们在webapps
目录换上新foo.war
,Tomcat的检查,看看是否被更改,删除旧foo
目录,并unwar 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
,但由于脚本中没有发生错误。我们现在修复了这个错误。但是,该脚本之前在部署过程中使用过,并且我们从未遇到过这个问题,所以我假设Tomcat能够检测到这些更改并部署新的foo.war
。
那么,Tomcat是否检测到war文件发生了变化。如果是这样,它是如何做到的?部署脚本触及war文件来更新时间戳以帮助检测,因此它不能成为时间戳问题。
如果您将foo.war复制到webapps,tomcat将重新部署您的应用程序。检查catalina.out的日志。您无需在每次部署时重新启动tomcat。 – tshenolo
你是说Tomcat会自动重新部署foo,但前提是我们不先关闭Tomcat?有趣。在我们的一些应用程序中,部署是_exploded war_,因为我们在部署时必须修改战争中的文件。也许我们应该改变我们的想法,并进行所有实况部署。 –
在部署之前不要关闭Tomcat。在eclipse或netbeans中修改你的源代码,创建war文件然后部署,如果你使用的是ant或maven,你可以使用它们进行部署,甚至更好。 – tshenolo