采用 struts + spring + jdbc 架构的一个网站,假设有这样一个需求,当数据库的某张表的某个字段的值发生改变(被update)的时候,
页面能弹出一个消息通知其他使用者这个字段的值被改变了。请问这种需求如何实现?举个例子,数据库中一张表存储了注册用户信息,包括帐号和密码等等。
有两个独立的系统在对这张表进行维护,一个是J2EE的web系统,一个是c++开发的exe程序,
现在c++程序对注册用户的密码进行了修改,数据库能否主动去通知web系统?排除让web系统去定时扫描数据库的这种方法。请问有没有其他实现方法?

解决方案 »

  1.   

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

  2.   

    楼主的问题,这个要求也太高了,数据库主动通知Web服务器,确实不太可能实现。如果用的是oracle数据库,倒有可能考虑采用trigger的方式,调用oracle中的java存储过程,再通过web service之类的接口通知给web server,
    不过,我觉得,从实用性角度考虑,这样的实现方式,远不如通过轮询这种方式来的更好,架构更清晰,应该也更稳定。仅供参考。
      

  3.   

    用触发器
    当数据表插入或更新一条数据的时候
    触发调用存贮过程往一个表中生成一条记录
    然后通过你的web写一个定时器
    感知这个表的新增的记录不就可以了吗
      

  4.   

    这要求对服务器的负载太高了.建议不要立即弹出,
    打开页面的时候存贮记录的timestamp,
    提交的时候比较timestamp报错.
      

  5.   

    1 弹出的操作肯定是web的应用服务器端实现的,不可能是数据库触发
    2 数据库通知应用服务器端,还是应用服务器端去定时查询数据库?  a) 数据库怎么通知应用服务器?这个有点难度哦
      b)应用服务器定时查询数据库,这个好像极其简单哦不用选择了吧!
      

  6.   

    我晕!!微软在几年前的缓存产品就做到了。请搜索 java缓存相关。