在Java中,如何在Web应用程序中动态重新加载资源包?
-
03-07-2019 - |
题
我们正在使用fmt:setBundle从数据库加载资源包(我们扩展了ResourceBundle类来做到这一点)。 当我们修改数据库中的值时,我们必须重新加载Web服务器以在Web应用程序上显示新值。
有没有简单的方法可以在不重新启动Web服务器的情况下使用新值?
(我们不希望始终从数据库中查找值,但我们希望使缓存无效,例如通过调用特殊的'admin'URL)
编辑:我们正在使用JDK 1.4,所以我更喜欢该版本的解决方案。 :)解决方案
正如其他人在评论中指出的那样,你可能想看一下Spring - 特别是 ReloadableResourceBundleMessageSource 。
其他提示
如果你正在使用JDK 1.6,你可以在 getTimeToLive()和 needsReload()
.com / javase / 6 / docs / api / java / util / ResourceBundle.Control.html“rel =”noreferrer“> ResourceBundle.Control 来控制是否需要使用数据库中的新值加载包缓存。
首先,您可以创建一个从 ReloadableResourceBundleMessageSource
扩展的类,以显示名为 getProperties
的内部类保护方法。此方法从 PropertiesHolder
对象返回并发映射。其次,您应该在Web配置类中配置该扩展类的bean。现在,您可以在服务或业务层中使用messageSource。以下是配置可重新加载的邮件源包的参考链接
不隶属于 StackOverflow