2014-02-05 125 views
0

我試圖在運行時重新加載資源包。 在我的應用程序中,登錄後,我得到<f:loadBundle basename="messages" var="msg" />的屬性。該調用是在我的應用程序庫模板中完成的,並且一切正常。屬性文件位於MyApp/resources/Resourcebundle重新加載而不重新啓動服務器JSF2 - Jboss 7

下一步是嘗試更新resourceBundle讀取屬性文件,我在我的userHome /資源。我在做什麼叫我的管理bean是:

File file = new File(System.getProperty("user.home")+ "/resources/"); 
    URL[] urls = {file.toURI().toURL()}; 
    ClassLoader loader = new URLClassLoader(urls); 

    ResourceBundle.clearCache(Thread.currentThread().getContextClassLoader()); 
    ResourceBundle.clearCache(); 
    bundle = ResourceBundle.getBundle("messages",Locale.ENGLISH, loader); 

我沒有錯誤和boundle有正確的價值觀,但任何變化了的地方在我的應用程序。有人可以告訴我如何重新加載捆綁並顯示我從外部文件獲得的新值?清除緩存似乎不工作,我擺脫了jsf2的faces-config.xml原因...希望有人能幫助。

+0

一件事是編程加載包。其他的事情是當你更新它們時讓它們刷新。我想你是瞄準第二個? –

+0

是的,我想刷新它們,每次我對用戶/資源下的屬性文件進行更改 – aegis80

回答

0

可以使用Apache Commons Configuration來解決這個問題,

PropertiesConfiguration propertiesConfig = new PropertiesConfiguration("yourProps.properties"); 
propertiesConfig.setReloadingStrategy(new FileChangedReloadingStrategy()); 

爲此,您需要使用公地配置依賴性/罐。

<dependency> 
    <groupId>commons-configuration</groupId> 
    <artifactId>commons-configuration</artifactId> 
    <version>20041012.002804</version> 
</dependency> 

你可以在java-doc找到進一步的細節,

資源:hot-reload-of-properties-file

相關問題