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

雄猫文档 说:

上下文描述符的位置是;

$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

优先级的顺序是什么?


答案 1

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

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

我基于上下文容器的Tomcat 5.5官方文档(以及下面的讨论)。

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

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

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

如果你在你说,这将使它成为最高的优先级,不管.同样的事情在你的,只要你没有(见上一段)。<Context override="true" ...>Catalina/localhost/myapp.xmlconf/context.xmlMETA-INF\context.xmlCatalina/localhost/myapp.xml

此外,上述文件中的路径部分实际上来自“默认值”,并且与 .如果你在 和 中使用不同的值,那就是 Tomcat 将查看的 dir 结构。/Catalina/localhost/conf/server.xml<Engine name="Catalina" defaultHost="localhost">server.xmlnamedefaultHost<Engine>

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


答案 2

我的理解是:

  • tomcat/conf/context.xml 是“默认”上下文.xml其内容与 webapp 上下文定义叠加在一起。我的TC 5默认上下文.xml中几乎没有任何内容,除了将web.xml列为支持此概念的监视资源。
  • tomcat/Catalina//.xml用于web应用程序。它要么手动放置在此处,要么在部署时从 Web 应用中获取...所以这是TC使用的真正主人。如果您编辑此更改将在下次开始阅读。
  • tomcat/webapps/myapp/META-INF/context.xml - 如果你在初始部署后改变它,这将在初始部署时复制到tomcat/Catalina/,我认为这没有任何影响。

推荐