com.zaxxer.hikari.pool.HikariPool$PoolInitializationException:尝试使用 Redshift 设置 HikraCP 时无法初始化池
com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool when trying to setup HikraCP with Redshift
我正在尝试使用 HikariCP 和 AWS Redshift 设置一个 JDBC 连接池,如下所示:
public class RedshiftConnector {
private static HikariDataSource dataSource;
private static int poolSize = 5;
public static void init() throws SQLException {
dataSource = new HikariDataSource();
dataSource.setDataSource(new com.amazon.redshift.jdbc42.DataSource());
dataSource.setJdbcUrl(Parameters.REDSHIFT_DB_URL);
dataSource.setUsername(Parameters.REDSHIFT_DB_USERNAME);
dataSource.setPassword(Parameters.REDSHIFT_DB_PASSWORD);
dataSource.setLogWriter(new PrintWriter(System.out));
dataSource.setMaximumPoolSize(poolSize);
}
public static synchronized Connection getConnection() {
return dataSource.getConnection();
}
public static void close() {
dataSource.close();
}
}
我已经在类路径中添加了 Redshift 驱动程序的 JAR!
现在的问题是当我调用 RedshiftConnector.getConnection()
时出现以下错误:
[com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Error creating Driver, Driver class name incorrect.] with root cause
java.lang.ClassCastException: com.amazon.redshift.jdbc42.Driver cannot be cast to com.amazon.dsi.core.interfaces.IDriver
at com.amazon.dsi.core.impl.DSIDriverFactory.createDriver(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.doInitialize(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.getSimbaConnection(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.getConnection(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.getConnection(Unknown Source)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:316)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:506)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:118)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:94)
谢谢
我找到了解决方案:
而不是使用 setDataSource():
dataSource.setDataSource(new com.amazon.redshift.jdbc42.DataSource());
我们必须使用 setDriverClassName() 并与 AWS Redshift 完美配合:
dataSource.setDriverClassName("com.amazon.redshift.jdbc42.Driver");
谢谢
我正在尝试使用 HikariCP 和 AWS Redshift 设置一个 JDBC 连接池,如下所示:
public class RedshiftConnector {
private static HikariDataSource dataSource;
private static int poolSize = 5;
public static void init() throws SQLException {
dataSource = new HikariDataSource();
dataSource.setDataSource(new com.amazon.redshift.jdbc42.DataSource());
dataSource.setJdbcUrl(Parameters.REDSHIFT_DB_URL);
dataSource.setUsername(Parameters.REDSHIFT_DB_USERNAME);
dataSource.setPassword(Parameters.REDSHIFT_DB_PASSWORD);
dataSource.setLogWriter(new PrintWriter(System.out));
dataSource.setMaximumPoolSize(poolSize);
}
public static synchronized Connection getConnection() {
return dataSource.getConnection();
}
public static void close() {
dataSource.close();
}
}
我已经在类路径中添加了 Redshift 驱动程序的 JAR!
现在的问题是当我调用 RedshiftConnector.getConnection()
时出现以下错误:
[com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Error creating Driver, Driver class name incorrect.] with root cause
java.lang.ClassCastException: com.amazon.redshift.jdbc42.Driver cannot be cast to com.amazon.dsi.core.interfaces.IDriver
at com.amazon.dsi.core.impl.DSIDriverFactory.createDriver(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.doInitialize(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.getSimbaConnection(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.getConnection(Unknown Source)
at com.amazon.jdbc.common.AbstractDataSource.getConnection(Unknown Source)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:316)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:506)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:118)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:94)
谢谢
我找到了解决方案:
而不是使用 setDataSource():
dataSource.setDataSource(new com.amazon.redshift.jdbc42.DataSource());
我们必须使用 setDriverClassName() 并与 AWS Redshift 完美配合:
dataSource.setDriverClassName("com.amazon.redshift.jdbc42.Driver");
谢谢