gpt4 book ai didi

java - 为 JDBC 连接设置网络超时

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:03 24 4
gpt4 key购买 nike

我正在尝试用 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)。什么可能导致这个错误,因为我只实现了我认为已经在 J​​ava 中定义的方法,因此不会拒绝编译。

注意:如果有抽象方法,Java 不允许编译具体类。

最佳答案

setNetworkTimeout() 在 JDBC 4.1 中引入,在 JDBC 4.0 中不存在。

如果您想使用 setNetworkTimeout() 方法,您将需要 ojdbc7,因为 JDBC 4.1 仅随 Java 7 一起提供。

潜在的问题是,在以后的规范中向接口(interface)添加方法可能会导致这些接口(interface)的旧实现因错误而中断。即将推出的 Java 8 的新特性之一,即默认方法,有望使这个问题稍微减少一些。


显然还有一个用于 Oracle 的 JDBC 驱动程序属性可以修改套接字超时。

您也可以尝试使用 this Oracle JDBC property如果您使用的是瘦驱动程序,请设置套接字超时:

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);

关于java - 为 JDBC 连接设置网络超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18822552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com