我正在尝试在我在 Tomcat5 上运行的应用程序之一中使用符号链接(symbolic link)。感谢 another StackOverflow question 的一些帮助我能做到 通过在
中创建一个 context.xml 文件/...myapplication/META-INF/context.xml
我现在正尝试在生产服务器上实现它。但是,上面还运行着其他应用程序。还有另一个上下文文件
/...tomcat/conf/context.xml
在我看来,这些是在服务器范围内为所有应用程序设置配置。如果我在 conf/context.xml 文件中允许链接,我的符号链接(symbolic link)就可以工作。如果我不允许 conf/context.xml 中的链接,我的应用程序的符号链接(symbolic link)将不起作用,即使我在 META-INF/context.xml 中允许它们
我的问题是,conf/context.xml 是否控制所有应用程序?如果我希望符号链接(symbolic link)只在一个应用程序中工作,我是否需要删除 conf/context.xml 并为每个应用程序创建新的上下文文件?或者有什么方法可以只在我的应用程序中允许符号链接(symbolic link)吗?
最佳答案
参见 my answer到“Which Tomcat 5 context file takes precedence”问题。
关于您的具体allowLinks
问题,conf/context.xml
中的值默认优先。如果你在 conf/context.xml
中什么都不说, 默认值为 allowLinks="false"
在你的conf/context.xml
.
如果您只想为您的 myapplication
更改它,想说<Context allowLinks="true" ...>
在你的META-INF/context.xml
不会有任何影响,因为通常 conf/context.xml
设置将优先。
但是,如果你说 <Context allowLinks="true" <b>override="true"</b> ...>
在你的META-INF/context.xml
, 那么你所有的 <Context>
META-INF/context.xml
中的设置将是最高优先级,覆盖conf/context.xml
中的任何内容.
最后,而不是 myapplication/WEB-INF/context.xml
文件,我建议使用 conf/Catalina/localhost/myapplication.xml
文件。这种技术意味着您可以保持 WEB-INF 的内容干净,这是您的 web 应用程序的核心——我不喜欢冒险弄乱我的 web 应用程序的核心。 :-)
关于java - Tomcat context.xml 文件,是否有层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318241/