作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Web 应用程序中有一个管理页面可以重置缓存,但它仅重置当前 JVM 上的缓存。
Web 应用程序作为集群部署到两个 WAS 服务器。
有什么方法可以优雅地让每台服务器上的“清除缓存”按钮触发两个 JVM 上的方法吗?
编辑:最初的开发人员只是编写了一个包含 HashMap 的单例作为有问题的缓存。轻量级并且(以前)可以很好地满足要求。它将从六个或七个 Web 服务中提取的内容缓存指定的时间。
编辑:整个应用程序有三页,因此优雅的解决方案很可能是最轻量的解决方案。
最佳答案
由于缓存位于应用程序内部,因此您需要提供一个接口(interface)来在应用程序中清除缓存。 Quotidian 说使用 JMS 队列。这是行不通的,因为假设您有集群 MQ 队列,则只有一个实例会接收消息。
如果您想重用相同的实现,那么唯一的方法就是编写一些您能够在实例级别进行交互的 JMX。
如果没有,您可以使用内置的 WAS 缓存(启用了 JMX)或使用像 ehcache 这样的分布式缓存。
过去,我创建了一个子类 LinkedHashMap,它使用 JBOSS JGroups 链接到网络上的所有实例。 。当然,重新发明轮子总是痛苦的。
关于java - 如何在WAS集群中的两台不同服务器上触发代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998850/
我是一名优秀的程序员,十分优秀!