I tried using HikariCP connection pool to connect snowflake using JDBC. I use Spring Boot configuration XML file to create a bean. I have the private key for my authentication. So I tried the following,
Properties File:
snowflake.url=jdbc:snowflake://{account_name}.snowflakecomputing.com/?warehouse=${snowflake.warehouse}&db=${snowflake.database}&schema=${snowflake.schema}&role=${snowflake.role}
Spring Configuration XML:
<bean id="dbUtil" class="utilities.DbUtils">
<constructor-arg>
<bean id="snowflakeDataSource" class="com.zaxxer.hikari.HikariDataSource">
<property name="driverClassName" value="net.snowflake.client.jdbc.SnowflakeDriver"/>
<property name="jdbcUrl" value="${snowflake.url}"/>
<property name="username" value="${snowflake.user}"/>
<property name="dataSourceProperties">
<props>
<prop key="privateKeyFile">${snowflake.privateKeyPath}</prop>
<prop key="privateKeyPassphrase">${snowflake.privateKeyPassphrase}</prop>
</props>
</property>
</bean>
</constructor-arg>
</bean>
When trying to execute the query with commonsdbUtils library with the above configuration it throws the following error:
HikariPool-1 - Exception during pool initialization.
net.snowflake.client.jdbc.SnowflakeSQLLoggedException: Missing password.
at net.snowflake.client.jdbc.DefaultSFConnectionHandler.initialize(DefaultSFConnectionHandler.java:117)
at net.snowflake.client.jdbc.DefaultSFConnectionHandler.initializeConnection(DefaultSFConnectionHandler.java:85)
at net.snowflake.client.jdbc.SnowflakeConnectionV1.initConnectionWithImpl(SnowflakeConnectionV1.java:116)
at net.snowflake.client.jdbc.SnowflakeConnectionV1.<init>(SnowflakeConnectionV1.java:96)
at net.snowflake.client.jdbc.SnowflakeDriver.connect(SnowflakeDriver.java:180)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:319)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:327)