【问题标题】:tomcat does not pick the context.xml, it is getting coopied to CATALINA_HOME> conf>Catalina>localhost thoughtomcat 没有选择 context.xml,但它被连接到 CATALINA_HOME> conf>Catalina>localhost
【发布时间】:2013-10-15 12:14:10
【问题描述】:

我的 context.xml(在 META_INF 中)文件夹如下所示:

<?xml version="1.0" encoding="UTF-8"?>


<Context path="MY_CONTEXT_NAME" docBase="${catalina.home}/webapps/MY_APP_NAME"
        debug="0" privileged="true">

</Context>

问题是,当我通过 tomcat 管理器部署我的应用程序战争时,context.xml 被复制到 CATALINA_HOME> conf>Catalina>localhost 文件夹。但是,它仍然以某种方式从默认上下文部署,即 app_war_name。

之前,它甚至没有被复制到 localhost 文件夹,我从 tomcat 6.0>conf 文件夹中删除了默认的 context.xml。在那之后,文件至少被复制了。但是,部署不是从显式 context.xml 进行的。

我的 server.xml 主机条目如下所示:

  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false"
            xmlValidation="false" xmlNamespaceAware="false" >
  </Host> 

【问题讨论】:

  • 你有一个拼写错误 autoDeploy="fasle" 而不是 autoDeploy="false"
  • 抱歉错字,但更正错字并没有帮助。我认为,这可能是在尝试通过将其标记为真然后再次返回为假来使其工作时发生的......这无济于事:(我试图在这里检查各种其他链接..但不确定我在做什么错...

标签: java tomcat tomcat6 context.xml


【解决方案1】:

阅读 Context 元素的 path 元素的文档。写的很清楚

该属性只能在静态定义上下文时使用 服务器.xml。在所有其他情况下,路径将从 用于 .xml 上下文文件或 docBase 的文件名。

即使在 server.xml 中静态定义一个 Context 时,这个属性 除非 docBase 不位于 主机的 appBase 或 deployOnStartup 和 autoDeploy 均为 false。如果 不遵守这条规则,很可能导致双重部署。

然后阅读 docBase 元素的文档。

除非上下文元素是 在 server.xml 中定义或 docBase 不在 Host 的 appBase.

【讨论】:

  • 嗨,马克,感谢您引用此内容。让自己更清楚的几点:#1。我的要求是让tomcat 覆盖默认的上下文路径(通常是war 文件名),从而覆盖context.xml。 #2 我指的是文档:[link] (tomcat.apache.org/tomcat-6.0-doc/config/…) #3 这在 tomcat5.x 中对我有用,但是在 tomcat 6.0 中,同样的事情不起作用。
  • 当我读到 :[link] tomcat.apache.org/tomcat-6.0-doc/config/… 时,我想我明白了你的意思,但这是否意味着我根本不能这样做?鉴于,它在 tomcat 5.x 中工作,它也应该在 tomcat 6 中工作。基本上,我想为应用程序定义我的上下文,就像我们在 websphere 中使用 application.xml 定义一样。
  • 然后您必须 a) 在 appBase 之外找到 WAR,b) 在 $CATALINA_BASE/conf/// 中放置一个适当命名的 context.xml 文件
  • 好的...我尝试了 a) 将 WAR 放在 C:\MyProject\MyApp.war b) 将 context.xml 重命名为 My#Desired#context#URL.xml (更改docBase 指向 $CATALINA_BASE/conf/// 中外部放置的 war 文件,即 C:\MyProject\MyApp.war) 并启动 tomcat,它已成功部署,所需的上下文路径 (My/Desired /context/URL) 可以在 tomcat 管理器上看到,但是点击这个,我得到 404 错误。这是否意味着战争实际上并没有在 tomcat/webapps 中部署/提取?或者,我需要在 server.xml 中定义一个上下文元素吗?
  • 我在 coderanch 上看到了这篇文章:[链接]coderanch.com/t/554169/Tomcat/set-context-path-application-xml。根据这个讨论,似乎不可能在 tomcat 6 中实现这一点!!!是真的吗??我想知道...
【解决方案2】:

如果您使用新的上下文或更改的上下文再次部署,您需要先取消部署/或从 conf/.../localhost/yourapp.xml 中删除 context.xml

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    相关资源
    最近更新 更多