Tomcat 文档 (http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)
仅当 $CATALINA_BASE/conf/[enginename]/[hostname]/ 中不存在应用程序的上下文文件时,应用程序文件内 /META-INF/context.xml 的单个文件中。如果 Web 应用程序被打包为 WAR,那么 /META-INF/context.xml 将被复制到 $CATALINA_BASE/conf/[enginename]/[hostname]/ 并重命名以匹配应用程序的上下文路径。此文件一旦存在,如果将具有较新 /META-INF/context.xml 的新 WAR 放置在主机的 appBase 中,它将不会被替换。
粗体字清晰。但我通知不正确。(我正是需要这种行为)
以下是步骤:
- 带有 context.xml 的 aaa.war 包含在 META-INF 中
- 复制到网络应用程序。Tomcat 部署。文件
conf\Catalina\localhost\aaa.xml
确定 - 通过更改 META-INF/context.xml 来更改 aaa.war
- 复制到网络应用
- 文件
conf\Catalina\localhost\aaa.xml
变了!!!
怎么了?它是错误还是隐藏功能?
背景 - 我要解决的问题:
配置独立构建和安装。我厂出货战争档案。客户端使用他自己的设置来配置他的 Tomcat。当我发布一个新版本时,我只是在没有配置的情况下交付战争,并且在部署时它将使用客户端特定的配置。
根据文档,最好的地方是 context.xml 但如果每次都被覆盖,那么使用起来毫无意义。(如果必须创建新的交付物,我为什么要使用 JNDI 之类的东西?在构建时更改某些东西并不是一个很大的配置优势。)
环境:windows,tomcat 6.0.33