Java 从spring boot应用程序连接到oracle数据库时如何解决“驱动程序不支持获取/设置连接网络超时”的问题?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/53940321/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to fix "Driver does not support get/set network timeout for connections" while connecting to oracle database from spring boot app?
提问by juneSakura
I was trying to connect to my table and insert some data.We are using oracle database. In the code I have used oracle thin driver ojdbc14.I am getting
我试图连接到我的表并插入一些数据。我们正在使用 oracle 数据库。在代码中,我使用了 oracle 瘦驱动程序 ojdbc14。我得到了
2018-12-27 11:08:58.810 INFO 16548 --- [ main] com.zaxxer.hikari.pool.PoolBase : HikariPool-1 - Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I)
2018-12-27 11:08:58.810 ERROR 16548 --- [ main] com.zaxxer.hikari.pool.PoolBase : HikariPool-1 - Failed to execute isValid() for connection, configure connection test query (oracle.jdbc.driver.T4CConnection.isValid(I)Z).
I am fairly new to spring boot and was actually trying to
我对 spring boot 还很陌生,实际上是在尝试
do this demo - https://www.devglan.com/spring-jdbc/working-with-springboot-jdbctemplate
做这个演示 - https://www.devglan.com/spring-jdbc/working-with-springboot-jdbctemplate
only changes I have done is in my pom.xml and application.properties.
我所做的唯一更改是在我的 pom.xml 和 application.properties 中。
Is there any thing else needed for oracle? How i should solve this?All the example I see for oracle in net is with hibernate.Is is necessary to include hibernate approach? Thank you in advance.
oracle 还需要什么东西吗?我应该如何解决这个问题?我在网络中看到的所有 oracle 示例都是使用 hibernate。是否需要包含 hibernate 方法?先感谢您。
pom.xml
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- HikariCP connection pool -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
application.properties
应用程序属性
spring.datasource.url=jdbc:oracle:thin:@//url/service
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
回答by Arnaud Jeansen
That is because you are using a very old version of ojdbc. You should be using the latest versions of the Oracle JDBC driver to connect to your Oracle database.
那是因为您使用的是非常旧版本的 ojdbc。您应该使用最新版本的 Oracle JDBC 驱动程序连接到您的 Oracle 数据库。
From a quick test here:
从这里的快速测试:
- the warning is still present with version 11.2.0.1
- there is no warning with version 12.1.0.2
- oracle.jdbc.driver.T4CConnection.getNetworkTimeout API is in Oracle JDBC 12.1.0.2(https://docs.oracle.com/database/121/JAJDB/toc.htm).
- but oracle.jdbc.driver.T4CConnection.getNetworkTimeout API is not in Oracle JDBC 11.2.0.1(https://download.oracle.com/otn_hosted_doc/jdeveloper/905/jdbc-javadoc/oracle/jdbc/OracleConnectionWrapper.html)
- 该警告仍然存在于版本 11.2.0.1
- 版本 12.1.0.2 没有警告
- oracle.jdbc.driver.T4CConnection.getNetworkTimeout API 在 Oracle JDBC 12.1.0.2( https://docs.oracle.com/database/121/JAJDB/toc.htm) 中。
- 但 oracle.jdbc.driver.T4CConnection.getNetworkTimeout API 不在 Oracle JDBC 11.2.0.1( https://download.oracle.com/otn_hosted_doc/jdeveloper/905/jdbc-javadoc/oracle/jdbc/OracleConnectionWrapper.html)