Tomcat context.xml文件,是否有层次结构?

时间:2008-11-25 17:38:29

标签: java tomcat configuration symlink context.xml

我正在尝试在Tomcat5上运行的其中一个应用程序中使用符号链接。感谢another StackOverflow question的一些帮助,我能够做到  通过在

中创建context.xml文件

/ ...所有MyApplication / META-INF / context.xml中

我现在正在尝试在生产服务器上实现它。但是,还有其他应用程序在运行。还有另一个上下文文件

/ ...的Tomcat / CONF / context.xml中

在我看来,这些是在服务器范围内为所有应用程序设置配置。如果我在conf / context.xml文件中允许链接,我的符号链接可以工作。如果我不在conf / context.xml中允许链接,我的应用程序的符号链接不起作用,即使我已在META-INF / context.xml中允许它们

我的问题是,conf / context.xml是否控制所有应用程序?如果我希望符号链接仅在一个应用程序中工作,我是否需要删除conf / context.xml并为每个应用程序创建新的上下文文件?或者我是否可以在myapplication中允许使用符号链接?

2 个答案:

答案 0 :(得分:7)

请参阅my answer至“Which Tomcat 5 context file takes precedence”问题。

关于您的具体allowLinks问题,conf/context.xml中的值默认优先。如果您在conf/context.xml中没有说任何内容,则conf/context.xml中的默认值为allowLinks="false"

如果您只想为myapplication进行更改,尝试在<Context allowLinks="true" ...>中说META-INF/context.xml将无效,因为通常 {{1}设置将优先。

但是,如果您在conf/context.xml中说 <Context allowLinks="true" override="true" ...> ,那么META-INF/context.xml中的所有<Context>设置都将最高优先级,覆盖任何内容在META-INF/context.xml

最后,我推荐使用conf/context.xml文件,而不是myapplication/WEB-INF/context.xml文件。这种技术意味着你可以保持WEB-INF的内容干净,这是你的webapp的胆量 - 我不喜欢在我的webapp的胆量中冒险。 : - )

答案 1 :(得分:0)

只是添加一点。

通常将meta-inf / context.xml复制到conf / Catalina / localhost / myapplication.xml

当重新部署war文件时,将删除conf / Catalina / localhost / myapplication.xml,并按上述方式复制新文件。

这可能是一个真正的痛苦。我喜欢应用程序特定上下文的想法,但我没有看到在meta-inf目录中如何帮助。

对于Prod,UAT等,这将成为一种真正的痛苦。

因此,对于任何服务器静态但特定于应用程序,最好将其放在conf / context.xml中。对于多个应用程序而言,它具有负面影响,触摸一个无意中触及它们的所有应用程序。