无法初始化 HikariCP 池连接,加载本机库 db2jcct2 失败
Cannot initialise HikariCP pooled connection, Failure in loading native library db2jcct2
我正在尝试将 HikariCP 与 DB2 一起使用,但出现以下错误:
Failure in loading native library db2jcct2,
java.lang.UnsatisfiedLinkError: db2jcct2
我的 class 路径中有 db2jcc4.jar 文件,而且只有它。
以及以下 hikari 属性文件:
dataSourceClassName=com.ibm.db2.jcc.DB2SimpleDataSource
dataSource.user=username
dataSource.password=password
dataSource.databaseName=database
dataSource.serverName=server:50000
据我了解 Hikari tries to use type 2 driver 因此它需要本机库 db2jcct2 对吗?如果是,我怎么能隐含地说寻找 4 型驱动程序?
更新:
建议的答案不能解决我的问题。它可以给出方向,但我只能通过阅读那个答案才能得到正确的答案。同时你可以在这个问题的评论中找到答案。
这道题等同于Why is DB2 Type 4 JDBC Driver looking for native library db2jcct2?
如果您在代码中配置 DataSource
,您需要这样做:
// Assuming dataSource is a com.ibm.db2.jcc.DB2SimpleDataSource
dataSource.setDriverType(4);
DataSources 是 javabean。 javabean的约定是一对setXxxx
/getXxx
代表属性xxxx
。所以settersetDriverType
等同于属性driverType
。
hikari 属性通过定义属性(然后通过反射设置)来配置数据源。要执行 setDriverType(4)
的等效操作,您需要使用 属性 driverType=4
。鉴于该属性文件中使用的约定导致:
datasource.driverType=4
对于 DB2 type 4 驱动程序,请尝试以下配置。
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="dataSourceClassName" value="com.ibm.db2.jcc.DB2SimpleDataSource"/>
<property name="maximumPoolSize" value="${db.maxTotal}" />
<property name="dataSourceProperties">
<props>
<prop key="driverType">4</prop>
<prop key="serverName">192.168.xxx.xxx</prop>
<prop key="databaseName">dbname</prop>
<prop key="portNumber">50000</prop>
<prop key="user">db2inst1</prop>
<prop key="password">password</prop>
</props>
</property>
<property name="jdbcUrl" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
我正在尝试将 HikariCP 与 DB2 一起使用,但出现以下错误:
Failure in loading native library db2jcct2, java.lang.UnsatisfiedLinkError: db2jcct2
我的 class 路径中有 db2jcc4.jar 文件,而且只有它。 以及以下 hikari 属性文件:
dataSourceClassName=com.ibm.db2.jcc.DB2SimpleDataSource
dataSource.user=username
dataSource.password=password
dataSource.databaseName=database
dataSource.serverName=server:50000
据我了解 Hikari tries to use type 2 driver 因此它需要本机库 db2jcct2 对吗?如果是,我怎么能隐含地说寻找 4 型驱动程序?
更新: 建议的答案不能解决我的问题。它可以给出方向,但我只能通过阅读那个答案才能得到正确的答案。同时你可以在这个问题的评论中找到答案。
这道题等同于Why is DB2 Type 4 JDBC Driver looking for native library db2jcct2?
如果您在代码中配置 DataSource
,您需要这样做:
// Assuming dataSource is a com.ibm.db2.jcc.DB2SimpleDataSource
dataSource.setDriverType(4);
DataSources 是 javabean。 javabean的约定是一对setXxxx
/getXxx
代表属性xxxx
。所以settersetDriverType
等同于属性driverType
。
hikari 属性通过定义属性(然后通过反射设置)来配置数据源。要执行 setDriverType(4)
的等效操作,您需要使用 属性 driverType=4
。鉴于该属性文件中使用的约定导致:
datasource.driverType=4
对于 DB2 type 4 驱动程序,请尝试以下配置。
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="dataSourceClassName" value="com.ibm.db2.jcc.DB2SimpleDataSource"/>
<property name="maximumPoolSize" value="${db.maxTotal}" />
<property name="dataSourceProperties">
<props>
<prop key="driverType">4</prop>
<prop key="serverName">192.168.xxx.xxx</prop>
<prop key="databaseName">dbname</prop>
<prop key="portNumber">50000</prop>
<prop key="user">db2inst1</prop>
<prop key="password">password</prop>
</props>
</property>
<property name="jdbcUrl" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>