哪个Tomcat 5上下文文件优先?
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。 除了你列出的
元素外,还会查看其他几个地方(参见官方文档)。
如果Tomcat找到Catalina/localhost/myapp.xml
则永远不会打开META-INF/context.xml
。 因此,如果你真的拥有上面的所有文件,那么更正确的说META-INF/context.xml
是无关紧要的 ,而不是它是最低优先级。
如果你在Catalina/localhost/myapp.xml
中说
将使它成为最高优先级,而不管conf/context.xml
。 只要您没有Catalina/localhost/myapp.xml
(参见上一段),您的META-INF\context.xml
中也是Catalina/localhost/myapp.xml
。
此外,上述文件中路径的/Catalina/localhost/
部分实际上来自“默认” conf/server.xml
并匹配
。 如果您的server.xml
在
使用name
和defaultHost
不同值,那么这就是Tomcat看起来的目录结构。
最后,对于您列出的文件的...tomcat\
部分,Tomcat使用$CATALINA_BASE
环境变量中的dir。 如果未设置,则使用$CATALINA_HOME
环境变量中的dir,该变量是Tomcat安装的目录。 我喜欢设置和使用$CATALINA_BASE
这样我就不会“污染”我的Tomcat安装。
我的理解是:
- tomcat / conf / context.xml是“默认”context.xml,其内容与webapp上下文定义重叠。 我的TC 5默认context.xml几乎没有任何内容,除了将web.xml列为监视资源,它支持这一概念。
- tomcat / Catalina // .xml用于webapp。 要么是手动放置,要么是在部署时从您的webapp 中取出……所以这是TC使用的真正主人。 如果您编辑此更改将在下次启动时读取。
- tomcat / webapps / myapp / META-INF / context.xml – 如果你在初始部署后改变它,这会在初始部署时复制到tomcat / Catalina /,我认为没有任何影响
我没有找到任何官方文档,但我观察到加载顺序为:
1 tomcat_home/conf/context.xml 2 tomcat_home/webapps/myapp/META-INF/context.xml
其中#2是最后一个应用的(因此其设置会覆盖所有先前的设置,如果适用)。
我从未使用过webapp命名的上下文文件(您的选项#2)。