2015-05-08 52 views
1

我正在爲glassfish部署一個war文件,並想知道是否有可能擁有可以在我的web方法中訪問的屬性的文件。問題是我想改變文件,因爲業務請求改變而沒有必要重新編譯。我可以將其存儲在數據庫中,或者將其作爲glassfish本身的系統屬性,但想知道文件方式是否可行。Java servlet訪問配置文件

我看了這些,但所有好像你將不得不重新編譯?:

Load properties file in Servlet/JSP

loading properties file in init() of servlet without using context-param tag in web.xml

+0

我知道你想避免重新編譯。文件更新時是否允許重新啓動應用程序? –

+0

@Brett,重新開始會很好。 –

回答

3

當然可以。您可以在啓動時加載屬性並記下文件的修改時間;那麼當修改時間改變時,即當某人編輯它時,你可以重新加載屬性。檢查和重新加載可以使用後臺線程或訪問來完成,但請注意處理同步,因爲所有同時請求都會相互競爭。

我會將該文件保留在Glassfish之外,並使用系統屬性或上下文參數指向該文件,但您也可以編輯Glassfish提取WAR文件的屬性文件。

+0

這聽起來很有希望。所以我有一個存儲文件位置的系統屬性,並且每次運行該方法時,都可以重新加載文件? –

+0

原則上是的。但是,在每次訪問時重新加載文件可能太昂貴了。我可能會使用後臺作業每隔一分鐘左右檢查一次文件修改,並在修改後重新加載它。 – user2612030

+0

謝謝。我正在走這條路。 –