這是一個使用Guice在Tomcat上運行的webapp。根據文檔,我們應該能夠調用ResourceBundle.clearCache();
來清除ResourceBundle緩存,並可能從捆綁軟件屬性文件中獲取最新版本。如何清除ResourceBundle緩存
我們也試過如下:
Class klass = ResourceBundle.getBundle("my.bundle").getClass().getSuperclass();
Field field = klass.getDeclaredField("cacheList");
field.setAccessible(true);
ConcurrentHashMap cache = (ConcurrentHashMap) field.get(null);
cache.clear(); // If i debug here I can see the cache is now empty!
和
ResourceBundle.clearCache(this.class.getClassLoader());
行爲,我希望是:
- 啓動Tomcat和打了一個網頁,它說'Hello World'
- 更改屬性文件包含'你好世界」到「再見地球
- 清除使用servlet
- 點擊的頁面,希望看到緩存」再見地球
所以問題是,如何在ResourceBundle.clearCache()實際工作?還有我們需要清除的一些通用文件緩存嗎?
你發現了這個解決方案的任何? – prongs 2012-06-13 05:52:59
ResourceBundle.clearCache()在Java 1.6中添加。我正在研究Java 1.4服務器,這就是clearCache()未按預期工作的原因。 – Devrim 2014-11-03 12:16:04