Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过server.xml映射Tomcat上下文_Java_Jakarta Ee_Web Applications_Tomcat - Fatal编程技术网

Java 通过server.xml映射Tomcat上下文

Java 通过server.xml映射Tomcat上下文,java,jakarta-ee,web-applications,tomcat,Java,Jakarta Ee,Web Applications,Tomcat,我创建了一个war并将其部署到我的$CATALINA_HOME/webapps文件夹中。然后我想测试配置它以指向任意位置的战争,比如c:\tmp\mywar.war。下面是我在$CATALINA_HOME/conf内的server.xml文件中输入的内容 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/blah" docBase="h:/

我创建了一个war并将其部署到我的$CATALINA_HOME/webapps文件夹中。然后我想测试配置它以指向任意位置的战争,比如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指向爆炸战争,它就可以正常工作。我在这里遗漏了什么?

不要这样做,这种方法来自Tomcat 6:

对于Tomcat 6,与Tomcat 4.x不同,不建议将元素直接放在server.xml文件中。这是因为如果不重新启动Tomcat,就无法重新加载主conf/server.xml文件,因此修改上下文配置更具侵入性


您最好将上下文配置放在应用程序文件中位于/META-INF/context.xml的单独文件中

不建议将元素直接放置在server.xml文件中。这是因为如果不重新启动Tomcat,就无法重新加载主conf/server.xml文件,因此修改上下文配置更具侵入性


您可以在Tomcat7文档中查看更多详细信息:

如果您想在
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>

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

您可以通过检查下面的日志(标准错误日志)来验证这一点

[Tomcat安装目录]/logs

您将看到如下内容:

2014年6月16日12:34:10 PM org.apache.catalina.core.StandardContext资源启动
严重:启动静态资源时出错
java.lang.IllegalArgumentException:文档库。。。不存在或不是可读目录


另一个注意事项是(您不会得到错误消息),如果您部署的是war而不是分解的Web应用程序,则必须指定文件的路径,并且不仅仅是它包含目录

您能看到它部署在Tomcat admin management中吗?是的,它部署为/blah,但访问它只返回404。如果您将上下文设置放在$CATALINA_HOME/conf/localhost/blah.xml中,它将删除每个应用程序重新部署时的配置。除非有办法禁用此行为,否则每次手动替换xml配置的需要都会超过将配置置于server.xml之外所获得的任何好处。这是预期的行为,也是正确的。由于文件与上下文关联,因此必须通过重新部署将其删除。