Jef*_*rey 4 java configuration tomcat servlets
我试图通过创建一个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>
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误说
java.lang.IllegalArgumentException: Document base <path-to-tomcat> apache-tomcat-7.0.35/webapps/context does not exist or is not a readable directory
Run Code Online (Sandbox Code Playgroud)
如果我把<Parameter name="port" value="100" override="1"/>直接在context.xml中<tomcat-home>/context.xml,然后它工作.
我可以解释一下我做错了什么吗?
这是因为没有名称上下文的应用程序上下文.换句话说,没有Web应用程序将名称context配置到webapps目录.
形成与定义上下文相关的官方Tomcat 7文档:
可以明确定义单个Context元素:
在/META-INF/context.xml中的单个文件中的应用程序文件.(可选)(基于Host的copyXML属性),可以将其复制到$ CATALINA_BASE/conf/[enginename]/[hostname] /,并重命名为应用程序的基本文件名加上".xml"扩展名.
在$ CATALINA_BASE/conf/[enginename]/[hostname] /目录中的单个文件(扩展名为".xml")中.上下文路径和版本将从文件的基本名称(文件名减去.xml扩展名)派生.此文件始终优先于Web应用程序的META-INF目录中打包的任何context.xml文件.
在主conf/server.xml中的Host元素内.
因此,要使其工作,请将自定义文件命名为context.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>
Run Code Online (Sandbox Code Playgroud)
PS
并且您可以获得没有路径属性,因此不要包含它.
从Apache Tomcat 7文档:
只有在server.xml中静态定义Context时,才能使用此属性.在所有其他情况下,将从用于.xml上下文文件或docBase的文件名推断出该路径.
即使在server.xml中静态定义Context,也不能设置此属性,除非docBase不在Host的appBase下,或者deployOnStartup和autoDeploy都是false.如果未遵循此规则,则可能会导致双重部署.
| 归档时间: |
|
| 查看次数: |
10199 次 |
| 最近记录: |