如何存储和重放JDBC语句?

时间:2012-02-06 14:11:14

标签: java jdbc xmpp distributed-computing smack

鉴于基于JDBC的应用程序,它不是为在从计算机A上运行的应用程序的一个实例到在双向同步模式中在计算机B上运行的另一个实例的实时传播而设计的。如何在不使用Symmetric DS的情况下优雅地完成这项工作?

我们使用XMPP和XStream,将POJO转换为XML或JSON,通过XMPP,Smack API将它们发送到预先配置的“聊天室”,其他机器人会监听,重播他们收到的数据。因此,即使是离线客户端应用程序,也会通过发送最后一个“自时间戳”来接收“DiscussionHistory”。

我在Java中甚至在H2中都看到了“近实时数据库更改传播”,但是在注册的每个节点之间传播了更改,但我能想到的唯一解决方案是使用XMPP协议,在它周围建立一个“机器人”聊天室,让节点在那里发送数据,而其他人则监听变化。

所谓的“机器人”是不同计算机上的应用程序实例,应用程序实例应允许在同一数据库上进行实时协作,但允许进行脱机修改(因此没有集中式服务器来存储更改)。 / p>

1 个答案:

答案 0 :(得分:0)

一种常见的方法是构建缓存,以便应用程序始终在未找到特定条目时查询数据库。然后,您只需要同步缓存驱逐以强制组中的所有节点重新加载某个条目。使用例如spring方法缓存和ehcache很容易实现这一点。