5

我正在尝试在我在 Tomcat5 上运行的应用程序之一中使用符号链接。感谢另一个 StackOverflow 问题的帮助,我能够通过在其中创建一个 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 中使用符号链接?

4

2 回答 2

8

请参阅对“哪个 Tomcat 5 上下文文件优先”问题的回答。

关于您的具体allowLinks问题,conf/context.xml默认情况下,值优先。如果您在 your 中什么都不说conf/context.xml,则默认值allowLinks="false"在您的conf/context.xml.

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

但是,如果您在. _ _ <Context allowLinks="true" override="true" ...> META-INF/context.xml<Context>META-INF/context.xmlconf/context.xml

最后,myapplication/WEB-INF/context.xml我建议使用文件而不是conf/Catalina/localhost/myapplication.xml文件。这种技术意味着您可以保持 WEB-INF 的内容干净,这是您的 webapp 的核心——我不想冒险在我的 webapp 的核心中胡闹。:-)

于 2008-11-27T01:08:10.197 回答
0

只是为了补充一点。

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

当重新部署一个war文件时,conf/Catalina/localhost/myapplication.xml被删除,并如上所述复制一个新文件。

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

对于 Prod、UAT 等来说,这真的很痛苦。

因此,对于任何服务器静态但特定于应用程序的内容,最好将其放在 conf/context.xml 中。不利的是,它为多个应用程序提供了上下文,触摸一个您无意中触摸它们的应用程序。

于 2009-03-04T08:43:20.103 回答