Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 如何让Tomcat服从战争';s context.xml路径信息_Java_Tomcat_War - Fatal编程技术网

Java 如何让Tomcat服从战争';s context.xml路径信息

Java 如何让Tomcat服从战争';s context.xml路径信息,java,tomcat,war,Java,Tomcat,War,编辑:这是的副本。在另一个问题中,有人指出,Tomcat忽略了context.xml,尽管有文档,这里似乎也是这样 我将一个WAR复制到Tomcat 9webapps。此WAR的/META-INF/context.xml被忽略,结果路径只是WAR的名称。我不希望它被忽视。有很多关于该文件被忽略的问题,答案是“从Tomcat的conf/server.xml中删除上下文”。但是conf/server.xml中没有这样的东西: <Host name="localhost"

编辑:这是的副本。在另一个问题中,有人指出,Tomcat忽略了
context.xml
,尽管有文档
,这里似乎也是这样

我将一个WAR复制到Tomcat 9
webapps
。此WAR的
/META-INF/context.xml
被忽略,结果路径只是WAR的名称。我不希望它被忽视。有很多关于该文件被忽略的问题,答案是“从Tomcat的
conf/server.xml
中删除上下文”。但是
conf/server.xml
中没有这样的东西:

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/sc">
    <Manager pathname="" />
</Context>
但我想这是必须的

这是被忽略的
/META-INF/context.xml

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/sc">
    <Manager pathname="" />
</Context>

我知道它是由Tomcat读取的,因为在其中引入任何语法错误都会使Tomcat将相关的错误消息放入其日志中。但无论如何,它都被忽视了。我找到了以下文档:

此“/META-INF/context.xml”文件将自动复制到 “$CATALINA_HOME/conf/[engineame]/[hostname]/”,重命名为后 镜像应用程序的上下文路径

一旦“context.xml”文件被重命名并复制到 “[hostname]”目录,即使战争已经结束,它也不会被替换 更新为新的“/META-INF/context.xml”文件

令人困惑的是:只阅读一次战争的
context.xml
,然后忽略它背后的想法是什么?顺便说一下,目录
conf/Catalina/localhost/
无论如何都是空的

我试图将日志级别提高到罚款,但我无法使记录器报告,如何处理上下文文件

我的问题:如果我在
conf/server.xml
中没有定义上下文,如何使Tomcat不被忽略
/META-INF/context.xml
在我的战争中,包括上下文内容更改的情况?

您在这里问了几个问题

[为什么我的
路径被忽略?]

(从技术上讲,你没有问这个问题,但你显然想知道原因)

如果阅读,您将看到Tomcat在将
元素的
路径
属性绑定到WAR文件中时显式忽略了该属性。原因有很多,包括清晰性和安全性

只读取一次WAR的context.xml,然后忽略它,背后的想法是什么

Tomcat在部署时读取应用程序的
META-INF/context.xml
文件。如果您想重新读取它,那么重新部署您的应用程序(不仅仅是更新/重新启动它)。如果系统管理员与开发人员/WAR打包人员在应配置的内容上存在分歧,则该文件将被读取一次,而不会被覆盖,以允许系统管理员覆盖这些内容

如何使Tomcat在我的WAR中不忽略/META-INF/context.xml,包括上下文内容发生变化的情况


您必须重新部署应用程序。这可能需要取消部署/部署操作。

现在我得到了重读部分,但由于忽略了WAR的
context.xml
,日志中没有相应的消息,而且在我看来Tomcat通常会记录忽略的上下文(日志级别现在已经好了)。此外,您在给出的链接中提到的任何内容都已验证-在
conf/Catalina/
中没有上下文,在
conf/server.xml
中也没有上下文。