我正在使用JNDI从应用程序的context.xml中读取数据库配置。我目前的设置方式是在conf/Catalina/localhost中使用[appname].xml。然而,当我重新部署应用程序时,这个文件会被一个空的上下文文件覆盖,我必须将自定义的上下文文件复制回conf/Catalina/localhost目录。对于我的测试服务器和生产服务器,我有不同的数据库设置等,因此不想将META-INF中的上下文文件放在WAR文件中,但只想将其保存在conf/Catalina/localhost目录中。这可能吗?
是否有更好的地方来放置数据库配置?
我也希望避免将配置放在server.xml文件中,尽管我知道这是可能的。
谢谢!
我想研究一下使用maven概要文件(一个用于prod,一个用于test),并为每个概要文件提供不同的资源定义。您可以将常用文件保存在src/main/resources中,然后为每个配置文件类型设置一个文件夹,以将特定的配置文件保存在:中
- src/test/resources
- src/prod/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>
最后,您可以使用-Pprod或-Ptest-profile参数来构建mvn-
mvn -Pprod package
问题是取消部署删除了安装在Catalina/localhost/.xml 中的特定于webapp的context.xml文件
如果你不想删除文件,你只需要重新部署它,而不是取消部署/部署