2014-01-07 83 views
1

我们有一个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.warfoo目录。

我想如果我们在webapps目录换上新foo.war,Tomcat的检查,看看是否被更改,删除旧foo目录,并unwar foo.warfoo

我们有一个失败的自动部署脚本,部署脚本关闭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文件来更新时间戳以帮助检测,因此它不能成为时间戳问题。

+0

如果您将foo.war复制到webapps,tomcat将重新部署您的应用程序。检查catalina.out的日志。您无需在每次部署时重新启动tomcat。 – tshenolo

+0

你是说Tomcat会自动重新部署foo,但前提是我们不先关闭Tomcat?有趣。在我们的一些应用程序中,部署是_exploded war_,因为我们在部署时必须修改战争中的文件。也许我们应该改变我们的想法,并进行所有实况部署。 –

+0

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

回答

2

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

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

相关问题