2008-11-25 78 views
5

我正尝试在Tomcat5上运行的其中一个应用程序中使用符号链接。由于从another StackOverflow question一些帮助,我能够通过创建一个context.xml文件中做 Tomcat context.xml文件,是否有hiearchy?

/...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并为每个应用程序创建新的上下文文件?或者有没有办法让我的应用程序中只有符号链接?

回答

7

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

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

如果你想改变它,只为你的myapplication,想说你META-INF/context.xml<Context allowLinks="true" ...>不会有任何影响,因为通常设置conf/context.xml将优先考虑。

但是,如果你说你的META-INF/context.xml<Context allowLinks="true" override="true" ...>,然后在META-INF/context.xml所有<Context>设置将最高优先级,conf/context.xml覆盖任何东西。

最后,我建议使用conf/Catalina/localhost/myapplication.xml文件,而不是myapplication/WEB-INF/context.xml文件。这种技术意味着你可以保持你的WEB-INF内容干净,这是你的web应用程序的内容 - 我不喜欢在我的web应用程序的内部冒险。 :-)

0

只需添加一个点。

通常日META-INF/context.xml中复制到的conf /卡塔利娜/本地主机/ myapplication.xml

当redploying一个WAR文件的conf /卡塔利娜/本地主机/ myapplication.xml被删除,新如上所述复制一个。

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

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

因此,对于任何服务器静态但特定于应用程序的情况,最好将它放在conf/context.xml中。其中有几个应用程序的背景是负面的,触摸一个你无意中碰到它们。

+1

这是不正确的。直接从[documentation](http://tomcat.apache.org/tomcat-5.5-doc/config/context.html):_一旦这个文件存在,它将不会被替换,如果一个新的WAR/META- INF/context.xml放置在主机的appBase._中 – Lucas 2013-07-22 20:37:38

相关问题