1

在 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 会忽略它,即使我从 Tomcat 管理器重新加载 webapp。

我尝试将 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 文件,一个带有测试 my-app.xml,另一个带有生产 my-app.xml。如果我按特定顺序将 WAR 文件或 my-app.xml 备份文件复制到正确的目录中,我也可以让它工作。由于多种原因,我不喜欢这些解决方案中的任何一个。

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

谢谢!

4

1 回答 1

3

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

于 2010-01-27T00:31:49.880 回答