我试图通过在以下位置创建 context.xml 文件来覆盖应用程序 web.xml 文件中的参数<tomcatHome>/conf/Catalina/localhost
context.xml 文件看起来像
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp">
<Parameter name="port" value="100" override="1"/>
</Context>
但我收到一条错误消息
java.lang.IllegalArgumentException: Document base <path-to-tomcat> apache-tomcat-7.0.35/webapps/context does not exist or is not a readable directory
如果我把<Parameter name="port" value="100" override="1"/>
直接在context.xml
in <tomcat-home>/context.xml
然后就可以了。
有人可以解释我做错了什么吗?
这是因为不存在该名称的应用程序上下文context。换句话说,没有具有该名称的网络应用程序context部署到webapps目录。
形成 Tomcat 7 相关的官方文档定义上下文 http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context:
可以显式定义各个 Context 元素:
在应用程序文件内 /META-INF/context.xml 的单个文件中。可选(基于主机的 copyXML 属性)
这可以复制到 $CATALINA_BASE/conf/[enginename]/[hostname]/ 和
重命名为应用程序的基本文件名加上“.xml”扩展名。
在 $CATALINA_BASE/conf/[enginename]/[hostname]/ 目录中的各个文件(扩展名为“.xml”)中。上下文
路径和版本将从文件的基本名称(
文件名减去 .xml 扩展名)。该文件将始终占用
优先于打包在 Web 应用程序中的任何 context.xml 文件
META-INF 目录。
在主conf/server.xml 的Host 元素内。
因此,为了使其工作,请将您的自定义文件命名为上下文.xml,但是your_app_name.xml。
在你的情况下将会是(如果我理解正确的话)myapp.xml.
这应该有效。我刚刚测试过。
myapp.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Parameter name="port" value="100" override="1"/>
</Context>
P.S.
你也可以不用path属性,所以不要包含它。
来自Apache Tomcat 7 文档 http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Common_Attributes:
仅当静态定义 Context 时才必须使用此属性
服务器.xml。在所有其他情况下,路径将从
用于 .xml 上下文文件或 docBase 的文件名。
即使在 server.xml 中静态定义 Context 时,此属性
不得设置,除非 docBase 不位于
主机的appBase或者deployOnStartup和autoDeploy都为false。如果
不遵守此规则,很可能会导致双重部署。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)