【问题标题】:Tomcat mapping context via server.xmlTomcat 通过 server.xml 映射上下文
【发布时间】:2012-03-15 03:38:44
【问题描述】:

我创建了一个战争并将其部署到我的 $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 admin管理中吗?
  • 是的,它部署为 /blah 但访问它只会返回 404

标签: java jakarta-ee web-applications tomcat


【解决方案1】:

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

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

您可以在此处查看 Tomcat7 文档中的更多详细信息:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      不要那样做,这个方法是来自 Tomcat 6 的discouraged

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

      【讨论】:

      • 如果您将上下文设置放在 $CATALINA_HOME/conf/localhost/blah.xml 中,它会删除每个应用重新部署的配置。除非有办法禁用此行为,否则通过将配置保留在 server.xml 之外所获得的任何好处都超过了每次手动替换 xml 配置的需要。
      • 这是预期行为并且是正确的。由于该文件与上下文相关联,因此必须通过重新部署来删除。
      【解决方案4】:

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

      您可以通过检查

      下的日志(标准错误日志)来验证这一点

      [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

      进一步注意(您不会收到错误消息)是,如果您部署的是战争而不是爆炸的网络应用程序,您必须指定文件的路径并且不只是它包含目录

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-09
        • 1970-01-01
        相关资源
        最近更新 更多