刚刚从 Tomcat 6 迁移到 Tomcat 7,并注意到当您部署一个名为 widget 的 webapp 时,META-INF/context.xml 不再被复制到 conf/Catalina/localhost/widget.xml。
我不清楚是否需要,如果将 context.xml 中的设置留在 META-INF 中,是否会使用它们,或者它们仅在移动到 conf/Catalina/localhost/widget.xml 时才有效
我使用香草 tomcat 7 安装
请参阅文档(我的重点):
可以明确定义各个上下文元素:
- 在应用程序文件内部的单个文件中
/META-INF/context.xml
。可选地(基于主机的copyXML
属性)这可以被复制并重$CATALINA_BASE/conf/[enginename]/[hostname]/
命名为应用程序的基本文件名加上“.xml”扩展名。
Host的文档有这样的说法copyXML
:
如果您希望在部署应用程序时将嵌入在应用程序(位于
/META-INF/context.xml
)中的上下文 XML 描述符复制到 xmlBase,则设置为 true。在随后的启动中,复制的上下文 XML 描述符将优先于嵌入在应用程序中的任何上下文 XML 描述符使用,即使嵌入在应用程序中的描述符是更新的。该标志的值默认为 false。请注意,如果 deployXML 为 false,则此属性将无效。
据我了解,除非元素 deployXML 设置为 ,否则使用 META-INF 中的 context.xml false
。请注意Tomcat 7 文档true
,除非启用了安全管理器,否则默认设置为!
但是,从文档中,我的印象是copyXML
在 context.xml 本身中设置属性(不接触 server.xml)会导致文件被复制到 conf:
<Context antiJARLocking="true" path="/widget" copyXML="true" />
但是,使用 Tomcat 7,文件似乎不会被复制到 conf,除非按照 Frank 上面的回答将copyXML
其设置为on。true