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
优先顺序是什么?
对于列出的文件,简单的假设您正在使用所有默认值的答案是(请注意 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>您列出的元素以外的元素(请参阅官方文档)。
<Context>
META-INF/context.xml如果Tomcat找到一个,它将永远不会打开Catalina/localhost/myapp.xml。因此,如果您实际上拥有上面的所有文件,则说 无关紧要META-INF/context.xml是更正确的,而不是优先级最低。
META-INF/context.xml
Catalina/localhost/myapp.xml
如果你说<Context override="true" ...>你的Catalina/localhost/myapp.xml,这将使它的 最高 优先级,而不管conf/context.xml。META-INF\context.xml只要您没有,您的中也有相同的东西Catalina/localhost/myapp.xml(请参阅上一段)。
<Context override="true" ...>
conf/context.xml
META-INF\context.xml
另外,上述/Catalina/localhost/文件中路径的一部分实际上来自“默认” conf/server.xml并与匹配<Engine name="Catalina"defaultHost="localhost">。如果您在中server.xml使用name和defaultHost,则使用不同的值<Engine>,这就是Tomcat将查找的dir结构。
/Catalina/localhost/
conf/server.xml
<Engine name="Catalina"defaultHost="localhost">
server.xml
name
defaultHost
<Engine>
最后,对于...tomcat\列出的文件部分,Tomcat使用$CATALINA_BASE环境变量中的目录。如果未设置,那么它将使用$CATALINA_HOME环境变量的目录,该目录是Tomcat安装目录。我喜欢设置和使用,$CATALINA_BASE以免“污染”我的Tomcat安装。
...tomcat\
$CATALINA_BASE
$CATALINA_HOME