2010-06-08 20 views
0

我在Web应用程序中有一个管理页面来重置缓存,但它只重置当前JVM上的缓存。如何触发WAS集群中两台不同服务器上的代码?

Web应用程序作为群集部署到两个WAS服务器。

任何方式,我可以优雅地有每个服务器上的“清除缓存”按钮触发两个JVM上的方法?

编辑: 最初的开发人员只是写了一个持有HashMap的单例作为有问题的缓存。轻量级和(以前)工作得很好的要求。它在指定的时间内缓存从六个或七个Web服务中提取的内容。

编辑: 有问题的整个应用程序是三页,所以优雅的解决方案可能是最轻的解决方案。

+0

你能更详细地描述你正在使用的缓存吗?它是否内置在WAS缓存中?是ehcache吗?你在缓存什么? – 2010-06-08 15:59:00

+0

@Romain Hippeau:已更新。 – 2010-06-08 16:14:58

回答

1

由于缓存是应用程序内部的,因此您需要提供一个界面来清除应用程序中的缓存。 Quotidian说要使用JMS队列。这是行不通的,因为假设您拥有群集的MQ队列,只有一个实例会选择该消息。

如果您想重复使用相同的实现,那么唯一的方法就是编写一些您可以在实例级别与之交互的JMX。

如果没有,您可以使用内置的WAS缓存(启用了JMX)或使用分布式缓存(如ehcache)。

在过去,我创建了一个使用JBOSS JGroups链接到网络上所有实例的子类别LinkedHashMap。当然,重新发明轮子总是很痛苦。

相关问题