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

Tomcat部署—Tomcat如何检测战争中的变化?,tomcat,web-deployment,Tomcat,Web Deployment,我们有一个tomcat部署,我们正在部署一个名为app.war的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目录中,T

我们有一个tomcat部署,我们正在部署一个名为
app.war
的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从未用新的
foo.war
的内容替换
/opt/Tomcat/webapps/foo
目录。手动删除
/opt/tomcat/webapps/foo
允许tomcat创建一个包含所有新文件的新
foo
目录

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


那么,Tomcat是否检测到war文件何时被更改。如果是,它是如何做到这一点的?部署脚本会接触war文件以更新时间戳以帮助检测,因此不会出现时间戳问题。

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


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

如果您将foo.war复制到webapps中,tomcat将重新部署您的应用程序。查看catalina.out以查看日志。您不必在每次部署时都重新启动tomcat。您是说tomcat将自动重新部署foo,但前提是我们不首先关闭tomcat?有趣。在我们的一些应用程序中,部署是一场爆发式的战争,因为我们在部署时必须修改战争中的文件。也许我们应该改变想法,进行所有实时部署。不要在部署之前关闭Tomcat。在eclipse或netbeans中修改您的源代码,创建war文件然后部署,如果您使用的是ant或maven,您可以使用它们进行部署,这会更好。感谢您的见解。我得和开发者谈谈这件事。可能存在问题,因为我们涉及多个服务器和数据库。但是,不关闭并恢复服务器将大大简化安装。最大的问题是
$CATALINA_BASE/conf/CATALINA/localhost
下的xml文件。这有时会更新。此外,war包含不同服务器的配置文件。我们必须爆发战争并更改那些文件。我一直认为这个过程比必要的复杂得多。@tshenolo提供了一个答案,所以我可以接受。