在Tomcat 6.0.20中更新现有webapp时出现问题

时间:2010-01-26 23:38:39

标签: java deployment tomcat tomcat6 war

在Tomcat 5中,我将构建一个WAR文件并将其放在我的测试服务器上。在此服务器上,CATALINA_HOME / conf / [EngineName] / [HostName]目录中有一个指向我的测试数据库的my-app.xml文件。完成测试后,我会将WAR文件发送给客户的IT部门,然后将文件放在CATALINA_HOME / webapps目录中。在他们的Tomcat实例上,他们有一个不同的my-app.xml文件,指向生产数据库。

最近我们升级到Tomcat 6,当我们任何一个人将WAR文件复制到webapps目录时,它会删除my-app.xml文件。删除后,如果我将my-app.xml文件的备份复制到CATALINA_HOME / conf / [EngineName] / [HostName]目录中,即使我从Tomcat Manager重新加载webapp,Tomcat也会忽略它。

我尝试将context.xml文件添加到WAR文件中的META-INF目录。当Tomcat扩展WAR文件时,它将使用context.xml文件覆盖my-app.xml文件。如果我随后将my-app.xml文件的备份复制回CATALINA_HOME / conf / [EngineName] / [HostName]目录,则Tomcat将删除WAR文件和扩展目录。

我可以在WAR文件中包含相应的my-app.xml文件,但这意味着构建两个WAR文件,一个使用test my-app.xml,另一个使用生产my-app.xml。如果我按特定顺序将WAR文件或my-app.xml备份文件复制到正确的目录中,我也可以使用它。出于多种原因,我不喜欢这些解决方案中的任何一种。

我做错了什么?为什么这在新版本中不起作用?我需要更改选项吗?我需要改变我的流程吗? (注意:客户的IT部门不希望停止并启动Tomcat以重新部署新的WAR文件。)

谢谢!

1 个答案:

答案 0 :(得分:3)

听起来Tomcat的自动部署会干扰您的手动部署。尝试将WAR文件部署到另一个目录(即不是webapps目录)或在server.xml中转换autoDeploy。这里还有一些注释:http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment