如何清除Wicket中的资源缓存?

时间:2013-05-30 11:37:35

标签: caching localization wicket

在我的Wicket应用程序中,我使用StringResourceLoaders作为我的文本资源。 文本键和值从属性文件和数据库加载。

我已经创建了一个用于存储和获取文本资源的服务类,这里我还有一个计划任务,每15分钟更新一次文本资源。

当执行此任务时,我首先更新文本资源,之后我想清除资源缓存以使Wicket使用更新的文本。

我的问题是没有清除缓存。以下是我尝试这样做的方法......

@Scheduled(fixedDelay=15*60*1000) // 15 minutes
private void taskUpdateTextResources() {
    updateTextResources();
    Application.get().getResourceSettings().getPropertiesFactory().clearCache();
}

这显然不是清除资源的正确方法,但是我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

要定期使资源缓存无效,您可以设置ResourcePollFrequency。

将此添加到应用程序的init方法中,所有资源应每15分钟重新填充一次。

getResourceSettings().setResourcePollFrequency(Duration.minutes(15));

答案 1 :(得分:0)

问题现在解决了。我发现Application.get()返回null(非常尴尬)。

我必须将Application添加为成员变量。

以下是解决方案:

@Inject
Application application;


@Scheduled(fixedDelay=15*60*1000) // 15 minutes
private void taskUpdateTextResources() {
    updateTextResources();
    application.getResourceSettings().getPropertiesFactory().clearCache();
}
相关问题