自己控制连接数据库用的线程,例如设定重连间隔为10秒,最大重试次数为6,每次如果连接不上,就让当前线程sleep10秒,6次之后还连不上的话就放弃或同时抛错。这样很容易实现。

解决方案 »

  1.   

    嗯,忘了说明,我的方法就是基于连接池的。。我指的超时是从数据源里面获取Connection时候的超时。
      

  2.   

    哦,查了一下Oracle的文档,原来是Oracle不支持:
    --------------------------------------------------------------------------------
    Notes: 
    Oracle JDBC does not support login timeouts. Calling the static DriverManager.setLoginTimeout() method will have no effect.   --------------------------------------------------------------------------------只好再想办法,谢谢楼上各位!
      

  3.   

    起事务,把数据库操作包含在事务中,使用事务超时,不要直接jdbc超时UserTransaction.setTransactionTimeout(1);