在 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 文件。)
谢谢!