java - 从 Spring Boot 应用程序连接到 Oracle 数据库时,如何解决“驱动程序不支持获取/设置连接的网络超时”?
问题描述
我试图连接到我的表并插入一些数据。我们正在使用 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).
我对弹簧靴相当陌生,实际上是在尝试
做这个演示 - https://www.devglan.com/spring-jdbc/working-with-springboot-jdbctemplate
我所做的唯一更改是在我的 pom.xml 和 application.properties 中。
oracle还需要什么东西吗?我应该如何解决这个问题?我在网络中看到的所有 Oracle 示例都是使用休眠的。是否有必要包含休眠方法?先感谢您。
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>
应用程序属性
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
解决方案
那是因为您使用的是非常旧的 ojdbc 版本。您应该使用最新版本的 Oracle JDBC 驱动程序连接到您的 Oracle 数据库。
从这里的快速测试:
- 警告仍然存在于版本 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)
推荐阅读
- excel - 有没有一种方法可以将 Excel 中的唯一时间格式解析为秒/分钟/小时/天以进行持续时间计算?
- google-sheets - 使用 Regextract 提取带有特殊字符的字符串
- c# - 如何强制 C# 任务对于给定的 ID 一次只存在一次
- bootstrap-4 - 自动换行后引导列无响应且时间过长
- java - 在 CXF 中通过 @Path 和 @PathParam/@BeanParam 避免冗余
- powershell - 使用快捷方式的管理员权限在 UNC 路径上运行 PowerShell 脚本
- google-cloud-platform - 如何使用部署管理器将角色分配给服务帐户
- sql - 您如何检查两个表并仅返回与 sql server 中匹配的表中的值
- s4sdk - 无法通过邮递员在我的 s4sdk 应用程序上运行更新、创建和删除查询
- swift - iOS - 录制 mp4 文件