使用 Denodo 驱动程序创建 Hikari 数据源和重复查询失败的问题

问题描述 投票:0回答:1

我正在尝试使用 Denodo 驱动程序创建 Hikari 数据源:

@Bean
  DataSource dataSourceDenodo() throws ClassNotFoundException {
    HikariDataSource dataSource = new HikariDataSource();
    dataSource.setDriverClassName("com.denodo.vdp.jdbc.Driver");
    dataSource.setJdbcUrl(env.getProperty("denodo.jdbcUrl"));
    dataSource.setUsername(env.getProperty("denodo.userName"));
    dataSource.setPassword(env.getProperty("denodo.password"));
    dataSource.setMaximumPoolSize(30);
    dataSource.setPoolName("denodo");
    return dataSource;
  }

我的项目中有 denodo-driver.jar 文件。由于某种原因,我收到以下消息:

com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=com.denodo.vdp.jdbc.Driver was not found, trying direct instantiation.
com.zaxxer.hikari.pool.PoolBase - denodo - Driver does not support get/set network timeout for connections. (null)
com.zaxxer.hikari.pool.HikariPool - denodo - Added connection com.denodo.vdb.jdbcdriver.VDBJDBCConnection@4cad7e97

我试图理解这一点,因为当我尝试查询 Denodo 时,它仅适用于第一次调用。如果我尝试使用相同的查询第二次调用它,我会得到:

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: denodo - Connection is not available, request timed out after 30241ms.

我尝试将

Class.forName("com.denodo.vdp.jdbc.Driver");
放入方法中,但这没有帮助。
我尝试了 Denodo 网站上的不同驱动程序版本。

jdbc hikaricp denodo
1个回答
0
投票

好吧,我想我已经弄清楚了。 对于未找到驱动程序的第一个问题 - 我猜问题是 Denodo 驱动程序本身“com.denodo.vdp.jdbc.Driver”未注册为 JDBC 驱动程序,但 Hikari 将通过直接实例化加载另一个驱动程序(VDBJDBCDriver),它应该工作正常。

关于只有第一个查询成功的问题 - 通过设置下一个参数解决问题

dataSource.setConnectionTestQuery("SELECT 1");

来自 Hikari 文档:

连接测试查询 如果您的驱动程序支持 JDBC4,我们强烈建议不要设置此属性。这适用于不支持 JDBC4 Connection.isValid() API 的“旧版”驱动程序。这是在从池中向您提供连接之前执行的查询,以验证与数据库的连接是否仍然有效。再次尝试在没有此属性的情况下运行池,如果您的驱动程序不兼容 JDBC4,HikariCP 将记录一条错误来通知您。默认:无

© www.soinside.com 2019 - 2024. All rights reserved.