我们使用 JSF2.0 和 JDK1.6 和 Tomcat6.1
我们需要在不重新启动服务器的情况下更新属性文件值(由 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();
我错过了什么吗?