Java 哪个Tomcat5上下文文件优先?

Java 哪个Tomcat5上下文文件优先?,java,tomcat,configuration,settings,context.xml,Java,Tomcat,Configuration,Settings,Context.xml,说: 上下文描述符的位置如下: $CATALINA_HOME/conf/[engineame]/[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-

说:

上下文描述符的位置如下:

$CATALINA_HOME/conf/[engineame]/[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 tomcat_home/conf/context.xml
2 tomcat_home/webapps/myapp/META-INF/context.xml
其中#2是最后一个应用的设置(因此其设置将覆盖所有以前的设置,如果适用)

我从未使用过名为context files的webapp(您的选项#2)。

我的理解是:

  • tomcat/conf/context.xml是“默认”context.xml,其内容与webapp上下文定义重叠。我的tc5 default context.xml中几乎没有任何内容,只是将web.xml列为关注的资源,这支持了这个概念
  • tomcat/Catalina/.xml用于webapp。它要么是手动放置在这里,要么是在部署时从你的webapp中获取的……所以这才是TC使用的真正的master。如果您编辑此更改,将在下一开始读取
  • tomcat/webapps/myapp/META-INF/context.xml-在初始部署时会将其复制到tomcat/Catalina/如果在初始部署后更改,我认为这不会有任何影响

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

我是基于这一点(以及下面的讨论)的

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

Tomcat 5.5。将在其他几个地方查找您列出的元素之外的
元素(参见官方文档)

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

如果您在
Catalina/localhost/myapp.xml
中说
,则无论
conf/context.xml
如何,它都将成为最高的优先级。在您的
META-INF\context.xml
中,只要您没有
Catalina/localhost/myapp.xml
(请参阅上一段),就可以使用相同的方法

此外,上述文件中路径的
/Catalina/localhost/
部分实际上来自“default”
conf/server.xml
,并与
匹配。如果您的
server.xml
中为
name
defaultHost
使用了不同的值,那么Tomcat将在目录结构中查找


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

哇,这是一个非常详细和令人印象深刻的答案。非常感谢。
...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml