一尘不染

哪个Tomcat 5上下文文件优先?

tomcat

Tomcat文档说:

上下文描述符的位置是;

$ CATALINA_HOME / conf / [引擎名称] / [主机名] /context.xml
$ CATALINA_HOME / webapps / [webappname] /META-INF/context.xml

在我的服务器上,至少有3个文件在浮动:

1 ...tomcat/conf/context.xml
2 ...tomcat/Catalina/localhost/myapp.xml
3 ...tomcat/webapps/myapp/META-INF/context.xml

优先顺序是什么?


阅读 203

收藏
2020-06-16

共1个答案

一尘不染

对于列出的文件,简单的假设您正在使用所有默认值的答案是(请注意 conf / Catalina / localhost):

...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml

我将这个(以及下面的讨论)基于 Context
Container

Tomcat 5.5官方文档

因此,如果那是简单的答案,那么完整的答案是什么?

Tomcat 5.5。还将在其他几个地方查找<Context>您列出的元素以外的元素(请参阅官方文档)。

META-INF/context.xml如果Tomcat找到一个,它将永远不会打开Catalina/localhost/myapp.xml。因此,如果您实际上拥有上面的所有文件,则说
无关紧要META-INF/context.xml是更正确的,而不是优先级最低。

如果你说<Context override="true" ...>你的Catalina/localhost/myapp.xml,这将使它的
最高 优先级,而不管conf/context.xmlMETA-INF\context.xml只要您没有,您的中也有相同的东西Catalina/localhost/myapp.xml(请参阅上一段)。

另外,上述/Catalina/localhost/文件中路径的一部分实际上来自“默认” conf/server.xml并与匹配<Engine name="Catalina"defaultHost="localhost">。如果您在中server.xml使用namedefaultHost,则使用不同的值<Engine>,这就是Tomcat将查找的dir结构。

最后,对于...tomcat\列出的文件部分,Tomcat使用$CATALINA_BASE环境变量中的目录。如果未设置,那么它将使用$CATALINA_HOME环境变量的目录,该目录是Tomcat安装目录。我喜欢设置和使用,$CATALINA_BASE以免“污染”我的Tomcat安装。

2020-06-16