通过server.xml映射Tomcat上下文

10

我创建了一个war文件并成功地部署到了$CATALINA_HOME / webapps文件夹中。然后我想测试将其配置为指向位于任意位置的war文件,例如c:\ tmp \ mywar.war。以下是我在$CATALINA_HOME / conf中的server.xml文件中放置的内容。

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/blah" docBase="h:/tmp/mywar.war" reloadable="true" />
</Host>

当我尝试加载localhost:8080/blah时,Tomcat返回404错误。如果我将docBase指向已解压的WAR文件,它就可以正常工作。我错过了什么?


你能在Tomcat管理界面中看到它部署了吗? - Cratylus
是的,它部署在/blah,但访问它只会返回404。 - static-fading
4个回答

5
如果您想在 http://myhost:8080/myTestContext 上提供一个网站,可以在 $Catalina_home$/conf/localhost/whateveryoulike.xml 中添加以下内容。
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <Context deployOnStartup="true" docBase="C:\path\to\your\docBase\" path="/myTestContext" reloadable="false">
    <Manager pathname=""/>
</Context>

5
最好将上下文配置放在应用程序文件中的/META-INF/context.xml单独文件中。
不建议直接将元素放置在server.xml文件中。这是因为它使修改上下文配置更具侵入性,因为不能重新加载主要的conf/server.xml文件而不重新启动Tomcat。
您可以在Tomcat7文档中查看更多详细信息:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context

0

我刚遇到了这个问题。有点尴尬,因为我路径写错了!

您可以通过检查位于

[Tomcat安装目录]/logs

下的日志(标准错误)来验证此问题。

您将看到类似以下内容:

Jun 16, 2014 12:34:10 PM org.apache.catalina.core.StandardContext resourcesStart SEVERE: Error starting static Resources java.lang.IllegalArgumentException: Document base ... does not exist or is not a readable directory

另外需要注意的是(您不会收到错误消息),如果您部署的是war文件而不是已解压的Web应用程序,则必须指定文件的路径而不仅仅是它所在的目录。


0

不要这样做,Tomcat 6 不建议 这种方法:

对于 Tomcat 6,与 Tomcat 4.x 不同,不建议直接在 server.xml 文件中放置 元素。这是因为这样会使修改上下文配置更加侵入性,因为无法重新加载主要的 conf/server.xml 文件而不重启 Tomcat。


如果您将上下文设置放在$CATALINA_HOME/conf/localhost/blah.xml中,则每次应用程序重新部署时都会删除配置。除非有一种方法可以禁用此行为,否则通过将配置保留在server.xml之外获得的任何好处都被手动替换xml配置的需要所抵消。 - static-fading
这是预期的行为,也是正确的。由于文件与上下文相关联,因此必须通过重新部署来删除它。 - Michael-O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接