我们正在使用FMT:setBundle加载从数据库资源包(我们扩展了ResourceBundle类来做到这一点)。 当我们修改数据库中的值,我们必须重新加载Web服务器上显示Web应用程序的新值。
有没有办法使用新值,无需重新启动Web服务器没有简单的方法?
(我们不希望总是仰望从数据库的价值,但我们希望通过调用一个特殊的“管理员”的URL缓存失效,例如)
编辑:我们使用的是JDK 1.4,所以我宁愿在该版本的解决方案。 :)
我们正在使用FMT:setBundle加载从数据库资源包(我们扩展了ResourceBundle类来做到这一点)。 当我们修改数据库中的值,我们必须重新加载Web服务器上显示Web应用程序的新值。
有没有办法使用新值,无需重新启动Web服务器没有简单的方法?
(我们不希望总是仰望从数据库的价值,但我们希望通过调用一个特殊的“管理员”的URL缓存失效,例如)
编辑:我们使用的是JDK 1.4,所以我宁愿在该版本的解决方案。 :)
正如其他人在评论中所指出的那样,你可能想寻找到春天-尤其是ReloadableResourceBundleMessageSource 。
如果您使用JDK 1.6,你可以使用回调方法getTimeToLive()
和needsReload()
中的ResourceBundle.Control来控制,如果包缓存需要加载与数据库中的新值。
首先,你可以创建一个从延伸类ReloadableResourceBundleMessageSource
暴露其内部类保护的方法称为getProperties
。 此方法返回来自并发地图PropertiesHolder
对象。 其次,你应该在你的网络配置类配置扩展类的豆。 现在,您可以在您的服务或业务层使用为messageSource。 下面是参考链路配置可重新加载的消息源包