在Java中,如何在Web应用程序中动态重新加载资源包?

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

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

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

编辑:我们正在使用JDK 1.4,所以我更喜欢该版本的解决方案。 🙂

正如其他人在评论中指出的那样,您可能希望研究Spring – 尤其是ReloadableResourceBundleMessageSource 。

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