2010-08-21 39 views
1

有關如何在J2EE項目中保留應用程序級別設置/配置文件的任何建議?我有一個必須寫入日誌的依賴性的Web項目和一個本地設置文件。無論如何要將設置文件存儲在本地目錄中並使其可寫?在Web應用程序中保留設置文件

[有些依賴的是:休眠和gridgain,所以它們產生大量的日誌]

我寧可不要硬編碼的設置文件的位置。

回答

5

您應該將配置文件放在WEB-INF文件夾下。你可以創建一個目錄/WEB-INF/config。如果他們應該在classpath中把它們放到/WEB-INF/classes。通過這樣做,該位置不是硬編碼的,而是位於您的應用程序的衆所周知的位置。

將它們放入/WEB-INF很重要,所以文件不能被瀏覽器「訪問」。


另一種方式可能是一個參數添加到web.xml配置,其中您指定配置文件的位置,以便它們不是webapps目錄內。你可以通過添加一個context-param來做到這一點。例如:

<context-param> 
    <param-name>configuration</param-name> 
    <param-value>/var/myapp/config</param-value> 
</context-param> 

值將變爲可見於Web應用程序爲名爲配置一個servlet上下文初始化參數。然後,您可以將其用作讀取配置文件的基本路徑(通過調用ServletContext中的getInitParameter方法獲取該值)。

但是,這隻適用於配置文件,它不需要在類路徑中。

+0

只有重新部署webapp時,您纔會丟失日誌。 – BalusC 2010-08-22 04:16:27

+0

這並不妨礙我。日誌最終會進入tomcat日誌文件夾[不會打擾我] – monksy 2010-08-22 04:53:49

+0

Web-INF是編譯進戰爭還是戰爭之外? – monksy 2010-08-22 04:54:16

0

與Soundlink達成一致。

您還可以將您的設置存儲在數據庫中。當你的servlet啓動時,設置數據應該從數據庫加載。

  • 親:無須維護不屬於Java EE的 標準 配置文件。
  • con:它在servlet啓動後起作用 up。
+0

我不喜歡這個解決方案,因爲它要求您在數據庫中擁有一組特定的表,或者爲應用程序提供一個數據庫。我正在使用的數據庫已經很大。設置文件使Web應用程序易於管理。 – monksy 2010-08-22 04:48:11

2

只需將配置文件的路徑添加到webapp的類路徑即可。這是常用的方法,許多API也用於從類路徑加載配置。對於手動加載這些文件的情況,可以使用ClassLoader#getResourceAsStream()獲取類路徑資源的InputStream

首先,在webapp目錄之外的某處創建一個固定路徑,以便將配置文件放入,例如, /var/webapp/config。然後配置servletcontainer以將此路徑包含在類路徑中。對於Tomcat,您可以在/conf/catalina.properties文件的shared.loadercommon.loader屬性中指定它。

+0

如果你這樣做,配置文件對所有安裝的webapps都是可見的。如果你只有一個webapp,那沒關係,否則這可能會有問題。 – Soundlink 2010-08-22 08:36:24

相關問題