2008-11-25 81 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

相關問題