8

我们使用 fmt:setBundle 从数据库加载资源包(我们扩展了 ResourceBundle 类来做到这一点)。当我们修改数据库中的值时,我们必须重新加载 Web 服务器以在 Web 应用程序上显示新值。

是否有任何简单的方法可以在不重新启动 Web 服务器的情况下使用新值?

(我们不想总是从数据库中查找值,但我们想使缓存无效,例如通过调用特殊的“管理员”URL)

编辑:我们使用的是 JDK 1.4,所以我更喜欢那个版本的解决方案。:)

4

3 回答 3

7

如果您使用的是 JDK 1.6,您可以使用回调方法getTimeToLive()ResourceBundle.ControlneedsReload()来控制是否需要使用数据库中的新值加载包缓存。

于 2008-10-01T08:13:13.137 回答
3

正如其他人在评论中指出的那样,您可能想要研究 Spring - 特别是ReloadableResourceBundleMessageSource

于 2008-10-01T08:50:40.850 回答
1

首先,您可以创建一个扩展自的类,ReloadableResourceBundleMessageSource以公开其内部类受保护的方法,称为getProperties. PropertiesHolder此方法从对象返回一个并发映射。其次,您应该在 Web 配置类中配置该扩展类的 bean。现在您可以在您的服务或业务层中使用 messageSource。这是参考链接配置可重新加载的消息源包

于 2019-04-30T05:45:12.187 回答