如何让数据库主动向web服务器递交消息

zilaishuichina 2009-04-27 07:41:32
采用 struts + spring + jdbc 架构的一个网站,

假设有这样一个需求,当数据库的某张表的某个字段的值发生改变(被update)的时候,
页面能弹出一个消息通知其他使用者这个字段的值被改变了。

请问这种需求如何实现?

举个例子,数据库中一张表存储了注册用户信息,包括帐号和密码等等。
有两个独立的系统在对这张表进行维护,一个是J2EE的web系统,一个是c++开发的exe程序,
现在c++程序对注册用户的密码进行了修改,数据库能否主动去通知web系统?

排除让web系统去定时扫描数据库的这种方法。请问有没有其他实现方法?
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
聪头 2009-04-28
  • 打赏
  • 举报
回复
1、通过数据库的触发器,修改一个小表或者直接调动外部程序。
2、通过定时程序,隔几秒扫描表。
APOLLO_TS 2009-04-28
  • 打赏
  • 举报
回复
我晕!!微软在几年前的缓存产品就做到了。请搜索 java缓存相关。
小霍夫 2009-04-28
  • 打赏
  • 举报
回复
很想得到解决方案.本人也有类似的业务要做.
老紫竹 2009-04-28
  • 打赏
  • 举报
回复
1 弹出的操作肯定是web的应用服务器端实现的,不可能是数据库触发
2 数据库通知应用服务器端,还是应用服务器端去定时查询数据库?

a) 数据库怎么通知应用服务器?这个有点难度哦
b)应用服务器定时查询数据库,这个好像极其简单哦

不用选择了吧!
Steve 2009-04-27
  • 打赏
  • 举报
回复
这要求对服务器的负载太高了.建议不要立即弹出,
打开页面的时候存贮记录的timestamp,
提交的时候比较timestamp报错.
Rachael1001 2009-04-27
  • 打赏
  • 举报
回复
用触发器
当数据表插入或更新一条数据的时候
触发调用存贮过程往一个表中生成一条记录
然后通过你的web写一个定时器
感知这个表的新增的记录不就可以了吗
jinxfei 2009-04-27
  • 打赏
  • 举报
回复
楼主的问题,这个要求也太高了,数据库主动通知Web服务器,确实不太可能实现。

如果用的是oracle数据库,倒有可能考虑采用trigger的方式,调用oracle中的java存储过程,再通过web service之类的接口通知给web server,
不过,我觉得,从实用性角度考虑,这样的实现方式,远不如通过轮询这种方式来的更好,架构更清晰,应该也更稳定。

仅供参考。
ben0759 2009-04-27
  • 打赏
  • 举报
回复
没有这样的办法,你要知道,Web是基于http协议来做请求和响应的,而且是无状态的,也就是说,只有推式,只有客户端主动向服务器端发送请求,服务器端响应客户端的请求,所以如果你要实现这样的系统,可能只有通过flash或者一些不是基于http协议的办法,可能通过socket可以完成吧,这个我就没试过了。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧