设置JDBC连接的网络超时
我正在尝试使用Java设置网络超时我的Oracle数据库连接。但是,我遇到了错误。以下是示例代码及其各自的例外。
try{ conn = new Database("oracle").connect();
conn.setNetworkTimeout(null, 30000); //I don't have an Executor, so the field is set to null
System.out.println(Switch.date() + " -> Database Connection Initialized");
}
catch(SQLException ex){
Logger.getLogger(Switch.class.getName()).log(Level.SEVERE, null, ex);
}
我得到的异常是:
Exception in thread "main" java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.setNetworkTimeout(Ljava/util/concurrent/Executor;I)V at ke.co.smart.Switch.<init>(Switch.java:524)
at ke.co.smart.Switch.main(Switch.java:161)
Java Result: 1
我相信这与抽象方法有关(请参见AbstractMethodError)。可能导致此错误的原因是我只实现了我认为已经在Java中定义的方法,因此不拒绝编译。
回答:
setNetworkTimeout()
是JDBC 4.1中引入的,而JDBC 4.0中没有。
您将需要ojdbc7,因为如果要使用setNetworkTimeout()
method,则JDBC 4.1仅随Java 7一起提供。
潜在的问题是,在更高规格的接口中添加方法到接口会导致这些接口的较早实现因错误而中断。即将到来的Java 8默认方法的新功能之一,有望使这个问题减少一些。
显然,Oracle也有一个JDBC驱动程序属性,可以修改套接字超时。
如果使用瘦驱动程序,也可以尝试使用此Oracle
JDBC属性设置套接字超时:
Properties props = new Properties();props.setProperty("user", "dbuser");
props.setProperty("password", "dbpassword");
props.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CONNECT_TIMEOUT, "2000");
Connection con = DriverManager.getConnection("<JDBC connection string>", props);
以上是 设置JDBC连接的网络超时 的全部内容, 来源链接: utcz.com/qa/432548.html