Food我们正在使用WAS 7.0,在群集环境中使用自定义的本地缓存。在我们的应用程序中,有一些非常常用(并且很少更新)的参考信息从数据库中检索并存储在服务器启动时的自定义缓存中(我们不通过应用程序服务器使用缓存)。可以通过应用程序输入新的参考值,完成后,将更新数据库中的数据,并反映该单个服务器上的缓存数据(1/3)。如果用户点击该群集中的任何其他服务器,他们将看不到新输入的参考值(除非服务器被退回)。重新启动集群不是一个可行的解决方案,因为它会降低生产。我的问题是如何告诉其他服务器更新其本地缓存?
我查看了JMS发布/订阅机制。每当我更新任何引用表的值时,我都想考虑发布消息,其他服务器可以充当订阅者并获取消息并刷新其缓存。服务器需要充当发布者和订阅者。我不确定如何将此解决方案合并到我的应用程序中。我也愿意接受建议和其他解决方案。
答案 0 :(得分:0)
通常,您应该考虑应用程序服务器提供的动态缓存服务。它已经开箱即用的复制选项。查看Using the DistributedMap and DistributedObjectCache interfaces for the dynamic cache了解详情。
关于您的自定义JMS解决方案 - 您的应用程序中应该有MDB,这将根据主题进行配置。更改缓存后,您的应用程序将发布对该主题的更改。 MDB读取该消息并更新本地缓存。
但由于这是一个非常复杂的变化,我强烈考虑切换到内置缓存。