我们使用的是SpringBoot 2.1.x版本,因此Hikari是默认的DataSource实现。但是,我不确定在数据库维护/重启或网络连接出现问题后如何配置Hikari设置以自动重新连接到我们的Oracle数据库。
我们有以下hikari设置,但似乎无济于事。
account.datasource.url: jdbc:oracle:thin:@myserver:1521:DEV
account.datasource.username: user
account.datasource.password: xxxx
account.datasource.driverClassName: oracle.jdbc.driver.OracleDriver
account.datasource.hikari.connection-timeout: 30000
account.datasource.hikari.maximum-pool-size: 3
account.datasource.hikari.idle-timeout: 60000
account.datasource.hikari.max-lifetime: 1800000
account.datasource.hikari.minimum-idle: 2
与数据库的网络连接恢复后,重新连接失败。
无法获得JDBC连接;嵌套的异常是java.sql.SQLTransientConnectionException:HikariPool-1-连接不可用,请求在30033ms之后超时。
任何其他account.datasource.hikari.xxxxx将有助于自动重新连接到数据库吗?
答案 0 :(得分:1)
来自HikariCP docs:
connectionTestQuery
如果您的驱动程序支持JDBC4,我们强烈建议 建议不要设置此属性。这是针对“旧版”驱动程序的 不支持JDBC4 Connection.isValid()API。这是查询 该操作将在从以下位置向您提供连接之前执行 池以验证与数据库的连接仍然存在 活。再次,尝试运行不具有此属性HikariCP的池 如果您的驱动程序不兼容JDBC4,将记录错误 知道。默认值:无
因此,我建议验证您的JDBC驱动程序是否确实符合JDBC4。如果不是,请设置上述属性。