小生象各位大侠请教一个问题
  是这样的 我用oci的方法连接oracle数据库,我想知道有没有一种方法当网络不通的时候,立刻通知到客户端程序与数据库断开连接。而不是当客户端执行如:insert(),update(),delete(),select等等语句时得到的异常来判断与数据库断开连接。
我想过在客户端有有一个线程每隔几妙中读取数据库的信息(如 select语句),用来判断是否与数据库断开连接。但是当客户端的数量过多时,这些无用的信息会给网络,和数据库造成很大的额外开销,
想请教各位一下,有没有更好的方法来判断客户端是否与数据库保持连接哪?   谢谢各位了!

解决方案 »

  1.   

    BS结构时,我是用EJB处理逻辑代码的。如果Delegate创建对象不成功,一般就是网络不通。这里就可以判断了,如果是网络不通的异常,可以将该网络不通的友好信息返回给用户,如果是其它异常,让其联系管理员。CS结构时,我一般是在服务器端连接数据库的。由客户端提出请求,这里就存在两种网络,一个是客户端<-->服务器,一个是服务器<-->oracle数据库服务器(当然可以在一台机子上),前者如果网络断开的话,客户端侦听的一些对象会报异常的,很容易判断网络是否不通。后者的话,一般前者如果没有问题,后者网络断开的可能性应该基本上不用考虑。
      

  2.   

    我采用的是c/s结构  
    用oci的方法连接oracle数据库,实际上就是通过jdbc调用oracle客户端的程序,再由oracle的客户端与数据库的服务器端通信。是本地的应用程序(java)直接与数据库服务器相连接。