我們正在使用JSF2.0與JDK1.6和Tomcat6.1重新加載JSF2.0資源包需要在不重新啓動服務器
我們有一個要求,更新屬性文件中的值(由JSF資源包加載)無重新啓動服務器以便實時Web會話不會停止。
JDK1.6有可能,我嘗試了下面的clearCache代碼,但它不起作用。
ResourceBundle bundle = ResourceBundle.getBundle("Label");
String s = bundle.getString("profile.firstName");
out.println("Value before: %"+ s);
ResourceBundle.clearCache(Thread.currentThread().getContextClassLoader());
bundle = ResourceBundle.getBundle("Label");
s = bundle.getString("profile.firstName");
out.println("Value after: {}"+s);
有沒有人試過之前。
更新
的下面似乎並不解決重裝資源包
ResourceBundle.clearCache(Thread.currentThread().getContextClassLoader());
ApplicationResourceBundle applicationBundle = ApplicationAssociate.getCurrentInstance().getResourceBundles().get("Label");
Field field = applicationBundle.getClass().getDeclaredField("resources");
field.setAccessible(true);
Map<Locale, ResourceBundle> resources = (Map<Locale, ResourceBundle>) field.get(applicationBundle);
resources.clear();
我錯過了什麼問題?
你確定你有權處理正確的包嗎?代碼中的「標籤」字符串需要替換爲您的包。我重點介紹了這段代碼,併爲ApplicationAssociate.getCurrentInstance()。getResourceBundles()添加了一個監視器,然後查看該監視器中的內容。 – cwash 2013-02-26 16:00:23
順便說一句,我使用JSF2,JDK1.6,Glassfish 3.1.1 – cwash 2013-02-26 16:02:01