首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java的数据库轮询

问使用Java的数据库轮询
EN

Stack Overflow用户
提问于 2010-02-27 18:14:00
回答 7查看 18K关注 0票数 5

我被困在了需要在Java代码中获得数据库更改的某个时刻。请求是使任何数据库表中的任何记录更新、添加、删除;应该被Java程序识别。如何实现JMS?还是Java线程?

更新:感谢各位的支持,我实际上正在使用Oracle作为DB和WebLogic10.3研讨会。实际上,我想从一个只有阅读权限的表中获得更新,所以伙计们,你们都有什么建议?我不能更新数据库。我唯一能做的就是读取DB,如果表中有任何更改,我必须获得某些数据行已经添加/删除或更新的信息/通知。

EN

回答 7

Stack Overflow用户

发布于 2010-02-27 18:16:10

除非数据库可以向Java发送消息,否则必须有一个线程轮询。

一个更好、更有效的模型是在变化中触发事件。在内部运行Java的数据库(例如,Oracle)可以做到这一点。

票数 8
EN

Stack Overflow用户

发布于 2010-02-27 18:25:51

我们通过使用EJB计时器任务轮询DB来完成这项工作。本质上,我们有一个状态字段,我们在处理该行时更新该状态。

因此,EJB计时器线程调用一个过程,该过程捕获标记为“未处理”的行。

肮脏,但也很简单和健壮。特别是在崩溃或其他什么之后,它仍然可以从崩溃的地方恢复,而不需要太多的复杂性。

缺点是DB上的负载浪费,而且响应时间也是有限的(可能需要秒)。

票数 6
EN

Stack Overflow用户

发布于 2010-02-27 18:20:33

我们通过在数据库表中添加触发器来实现这一点,数据库表调用可执行文件来发出Tib Rendezvous消息,所有感兴趣的Java应用程序都会接收该消息。

然而,实现此IMHO的理想方法是完全控制应用程序级别上的所有数据库写入,并在此时通知任何感兴趣方(通过多播、Tib等)。实际上,在有许多不同系统的情况下,这并不总是可能的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2348416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档