2011-05-20 41 views
3

我有一個Web應用程序,我希望通過外部文件夾(容器外部和.war文件)中的設置進行配置。因此,我想只注入一個設置到我的webapp中,這是我配置的根文件夾。這樣做的原因是維護團隊可以在純文本文件中更新配置設置,而無需重新部署war文件。如何參數化Web應用程序(不是servlet)的初始化

我的問題是,在只有一個配置設置的情況下,參數化Web應用程序的最佳方式是什麼。我知道我可以使用JVM arg,然後從初始化servlet中檢測它。理想情況下,我想要一些我可以放在server.xml(不是web.xml文件)中的東西,它可以通過我的ServletContextListener.contextInitialized(ServletContextEvent paramServletContextEvent)方法以編程方式獲得。

有沒有辦法做到這一點使用ServletContextListener方法或是另一種方式?

回答

3

我們正在使用-Dconfig.location=/foo/bar/config.properties,它工作正常。這是一個JVM參數,所以它轉到啓動腳本。

你可以在server.xml中通過JNDI註冊屬性,但我不相信這是一個更好的選擇。 server.xml或catalina.sh - 都是容器級別

+2

要檢索它,請使用System#getProperty(「config.location」)'。 – BalusC 2011-05-20 12:32:30

+0

嗨,我試圖避免使用JVM參數(如問題中所述)。有沒有一種在每次戰爭的基礎上傳遞參數的方法(通過server.xml文件)? – Chris 2011-05-20 16:20:25

+0

@Chris - 看到更新。 – Bozho 2011-05-20 16:23:17