我想听听你的专业意见。
情景]
有两个基于java的应用程序(比方说两个节点),两者都有缓存数据。如果刷新一个节点中的缓存,则应同步缓存的数据。例如,Tom最近获得了应用程序A的写入权限,这也应该反映在应用程序B中。
挑战]
两个节点不是集群友好的,唯一的通信方式是通过数据库。
问题陈述]
我们如何从一个节点获取触发器以在另一个节点上启动缓存刷新(并且由于策略而不使用第三方库)?
我目前正在尝试的一种方法是实现 DatabaseChangeListener ,当有任何事件( DatabaseChangeEvent )时,它将被激活。我可以尝试的另一种方法是轮询,但我认为这不是一个好习惯,因为这会产生很多无用的线程(可能会发生内存泄漏)。
您的意见将受到高度赞赏:)
答案 0 :(得分:1)
我认为最好的方法是通过网络通知第二个群集 - 您可以使用套接字。
如果你真的无法从一个节点到达另一个节点(当两个节点都能看到数据库服务器时我看不出任何原因)那么你可以使用PL / SQL(甚至是Oracle DB中的Java)在触发器中向您的第二个节点发送HTTP请求。有关详细信息,请参阅:http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_http.htm