根据Context元素的文档:
上下文参数
<Parameter>
您可以通过将元素嵌套在此元素中来配置将对 Web 应用程序可见的命名值作为 servlet 上下文初始化参数
。例如,您可以像这样创建一个初始化参数:
<Context ...>
...
<Parameter name="companyName" value="My Company, Incorporated"
override="false"/>
...
</Context>
这相当于在 Web 应用程序部署描述符 ( /WEB-INF/web.xml
) 中包含以下元素:
<context-param>
<param-name>companyName</param-name>
<param-value>My Company, Incorporated</param-value>
</context-param>
但不需要修改部署描述符来自定义此值。
元素的有效属性
<Parameter>
如下:
...
关于override
a 的属性<Parameter>
,文档说:
false
如果您不希望<context-param>
在 Web 应用程序部署描述符中找到相同的参数名称,请将其设置为覆盖此处指定的值。默认情况下,允许覆盖。
将其设置为 false 应该可以解决问题。这是“如何”部分。
对于“where”部分,请阅读上下文容器的介绍:
对于 Tomcat 6,与 Tomcat 4.x 不同,不建议将<Context>
元素直接放在server.xml
文件中。这是因为它使修改 Context 配置更具侵入性,因为在conf/server.xml
不重新启动 Tomcat 的情况下无法重新加载主文件。
上下文元素可以明确定义:
- 文件中
$CATALINA_BASE/conf/context.xml
:所有 webapp 都会加载 Context 元素信息。
- 在
$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default
文件中: Context 元素信息将由该主机的所有 webapps 加载。
- 在目录中的单个文件(扩展名为“.xml”)中
$CATALINA_BASE/conf/[enginename]/[hostname]/
。文件名(减去 .xml 扩展名)将用作上下文路径。可以使用# 来定义多级上下文路径,例如foo#bar.xml
,用于 的上下文路径/foo/bar
。可以使用名为 ROOT.xml 的文件定义默认 Web 应用程序。
$CATALINA_BASE/conf/[enginename]/[hostname]/
仅当在应用程序文件中的单个文件中不存在应用程序的上下文文件时/META-INF/context.xml
。如果 Web 应用程序被打包为 WAR,那么/META-INF/context.xml
将被复制并重$CATALINA_BASE/conf/[enginename]/[hostname]/
命名以匹配应用程序的上下文路径。/META-INF/context.xml
此文件一旦存在,如果在主机的 appBase 中放置了一个带有更新的新 WAR,它将不会被替换。
- 在 main 的 Host 元素内
conf/server.xml
。
除了 之外server.xml
,定义Context 元素的文件只能定义一个Context元素。