我正在使用 JNDI 从我的应用程序的 context.xml 中读取数据库配置。我目前进行此设置的方式是在 conf/Catalina/localhost 中包含 [appname].xml。但是,当我重新部署该应用程序时,该文件被一个空的上下文文件覆盖,我必须将自定义文件复制回 conf/Catalina/localhost 目录。我的测试和生产服务器有不同的数据库设置等,所以不想将上下文文件放在 WAR 文件的 META-INF 中,但只想将它保存在 conf/Catalina/localhost 目录中.这可能吗?
有没有更好的地方可以放置数据库配置?
我还想避免将配置放在 server.xml 文件中,尽管我知道这是可能的。
谢谢!
最佳答案
我会说考虑使用 Maven 配置文件(一个用于生产,一个用于测试),并为每个配置文件定义不同的资源。您可以将常用文件保存在 src/main/resources 中,然后为每种配置文件类型创建一个文件夹以将特定配置文件保存在:
- 源代码/测试/资源
- 源代码/产品/资源
然后您可以修改您的 pom 以定义每个配置文件及其相关资源:
<project>
<profiles>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
</resource>
<resource>
<directory>src/prod/resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
</resource>
</resources>
</build>
</profile>
<profile>
<id>test</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
</resource>
<resource>
<directory>src/test/resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
</resource>
</resources>
</build>
</profile>
</profiles>
</project>
最后,您可以使用 mvn 的 -Pprod 或 -Ptest 配置文件参数构建 war
mvn -Pprod package
关于java - 防止上下文 XML 在 Tomcat 6 中被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9584992/