设想:

foo.war 文件包含初始化参数 fooParam=1 的默认值。

这是定义在 foo.war!WEB_INF/web.xml 其中包含:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <context-param>
      <param-name>fooParam</param-name>
      <param-value>1</param-value>
      <description>
        my parameter "fooParam"
      </description>
    </context-param>

    ...

好的,现在我希望能够在 Tomcat {$CATALINA_HOME}/conf/ 目录中的配置文件中覆盖它。我在哪里/怎样才能做到这一点???

有帮助吗?

解决方案

根据文档 语境 元素:

上下文参数

您可以通过嵌套来配置将在Web应用程序中可见为Servlet上下文初始化参数的命名值 <Parameter> 此元素内部的元素。例如,您可以创建这样的初始化参数:

<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>

但不需要修改部署描述符来自定义此值。

a 的有效属性 <Parameter> 元素如下:

...

有关 override 的属性 <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 文件:Context 元素信息将被所有 webapp 加载。
  • 在里面 $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default 文件:Context 元素信息将由该主机的所有 Web 应用程序加载。
  • 在各个文件(带有“.xml”扩展名)中 $CATALINA_BASE/conf/[enginename]/[hostname]/ 目录。文件的名称(减去 .xml 扩展名)将用作上下文路径。可以使用 # 定义多级上下文路径,例如 foo#bar.xml 对于上下文路径 /foo/bar. 。默认 Web 应用程序可以使用名为 ROOT.xml 的文件来定义。
  • 仅当应用程序的上下文文件不存在时 $CATALINA_BASE/conf/[enginename]/[hostname]/, ,在单独的文件中 /META-INF/context.xml 在应用程序文件内。如果 Web 应用程序打包为 WAR 那么 /META-INF/context.xml 将被复制到 $CATALINA_BASE/conf/[enginename]/[hostname]/ 并重命名以匹配应用程序的上下文路径。一旦该文件存在,如果新的 WAR 具有较新的版本,则该文件不会被替换 /META-INF/context.xml 放置在主机的appBase 中。
  • 在 main 中的 Host 元素内 conf/server.xml.

除了 server.xml, ,定义的文件 语境 元素只能定义一个 语境 元素。

其他提示

哎呀!我以为我之前问过这件事。有时在这个网站上搜索真的很难。

在何处/如何为Tomcat设置配置资源.war文件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top