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

jep*_*rro 18 java settings configuration tomcat context.xml

Tomcat文档说:

上下文描述符的位置是;

$ CATALINA_HOME/conf/[enginename]/[hostname] /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
Run Code Online (Sandbox Code Playgroud)

优先顺序是什么?

net*_*eff 33

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

...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml
Run Code Online (Sandbox Code Playgroud)

我将这个(以及下面的讨论)基于Context ContainerTomcat 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.xml.同样的事情META-INF\context.xml,只要你没有Catalina/localhost/myapp.xml(见前一段).

此外,/Catalina/localhost/上面文件中的路径部分实际上是"默认",conf/server.xml并匹配<Engine name="Catalina" defaultHost="localhost">.如果你server.xmlnamedefaultHost中使用不同的值<Engine>,那就是Tomcat看起来的目录结构.

最后,对于...tomcat\您列出的文件部分,Tomcat使用$CATALINA_BASE环境变量中的dir .如果没有设置,那么它使用$CATALINA_HOME环境变量的dir ,它是Tomcat安装的目录.我喜欢设置和使用,$CATALINA_BASE这样我就不会"污染"我的Tomcat安装.