2

我知道 tomcat 可以通过几种不同的方式定义上下文。对于这个特定问题,我在$CATALINA_HOME/conf/context.xml中定义了一个主要上下文,并且在每个模块的/META-INF/context.xml中定义了每个模块上下文。我的问题是,如果我在主上下文中设置了某些未在每个模块上下文中设置/覆盖的参数,那么这些参数在加载每个模块上下文时是否仍然有效。

例子:

|----$CATALINA_HOME/conf/context.xml (i have logAbandoned=true set here)
|
|----webaps
       |
       |---META-INF/context.xml (no mention of logAbandoned here)

在上述场景中,是否会logAbandoned=true应用于 webapp 的上下文,因为它没有被覆盖或包含?或者只应用META-INF/context.xml中设置的参数而不应用主context.xml中设置的任何参数。

谢谢

4

1 回答 1

2

根据Apache 的文档

可以定义适用于多个 Web 应用程序的默认上下文元素。单个 Web 应用程序的配置将覆盖在这些默认值之一中配置的任何内容。在默认上下文中定义的任何嵌套元素,例如元素,将为每个应用默认上下文的上下文创建一次。它们不会在 Context 元素之间共享。

  • 在 $CATALINA_BASE/conf/context.xml 文件中: Context 元素信息将被所有 Web 应用程序加载。
  • 在 $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default 文件中: Context 元素信息将由该主机的所有 Web 应用程序加载。

所以看起来主上下文首先应用于所有应用程序,然后应用模块的上下文,覆盖与默认 context.xml 匹配的任何上下文元素。

于 2013-07-15T16:12:39.663 回答