Java 如何让Tomcat服从战争';s context.xml路径信息
编辑:这是的副本。在另一个问题中,有人指出,Tomcat忽略了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"
context.xml
,尽管有文档,这里似乎也是这样
我将一个WAR复制到Tomcat 9webapps
。此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 "%r" %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 "%r" %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
中也没有上下文。