最近在搞一个ORACLE开发的项目,项目中既有C/S,又有B/S结构部分;在C/S部分其中要实现应用程序和数据库之间的消息传递,即数据库中每次对相关表进行修改后,都要通知应用程序进行刷新,目前通过在应用程序中用时钟来实现,效果不好,闪;B/S结构部分在数据库数据更新时还要通过HTTP服务器动态刷新每个用户的浏览器页面,现在也是在Web页面中用时钟来实现,有没有更好的办法啊?例如通过服务器主动刷新客户端,怎么实现.

解决方案 »

  1.   

    也许您可以使用oracle 的消息队列加事务处理来完成这性工作。说白了也就是多用点pl/sql多做几个存储过程和触发器
      

  2.   

    楼主到是考虑的很多,不过我们公司的ERP要想快就手工刷新,一般也就Web页面中用时钟来实现
      

  3.   

    我以前也想用消息通知应用程序,但一直没有做,现在提供一个思路:用oracle的alter试试!
      

  4.   

    我用dbms_alert数据包做了一个,蛮好用的,改天贴出来。
    用消息队列,怎么通知应用程序啊?要用一个进程等待吗?Web页面中用时钟来实现?
    现在好像可以使用服务器端推技术来实现。那位用过没有?
      

  5.   

    我现在也是需要这种实现方式,通过Oralce直接发送消息(字符串)到工作站上,而工作站不用时钟,就像Winsock功能一样
      

  6.   

    --消息接收者需要以下代码:
    --注册消息
    CREATE OR REPLACE
    begin
      dbms_alert.register('MyAlert');
    end;
    /set serveroutput on--监听消息
    declare l_status number;
    l_msg varchar2(1800);
    begin
      dbms_alert.waitone(name => 'MyAlert',
     message => l_msg,
     status => l_status,
     timeout => dbms_alert.maxwait);
      if (l_status = 0) then
        dbms_output.put_line('msg from event is' || l_msg);
      end if;
    end;--消息发送者需要以下代码:
    --发送消息
    exec dbms_alert.signal('MyAlert','Hello World!'); 
    commit;
    /