Spring - сбой Hikari CP для DB2 - PullRequest
       11

Spring - сбой Hikari CP для DB2

0 голосов
/ 27 июня 2018

Я пытаюсь использовать пул соединений Hikari для моего приложения на основе Spring с использованием конфигурации bean-компонентов на основе xml. Ниже приведен мой конфигурационный компонент Hikari, и я использую Db2 в качестве базы данных.

<bean id="HikariConfig_UId_Primary" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="uidPrimaryCP" />
    <property name="connectionTestQuery" value="select 1 from sysibm.systables fetch first row only with UR" />
    <property name="dataSourceClassName" value="${Jdbc_DataSourceClassName}" />
    <property name="maximumPoolSize" value="${Jdbc_MaxPoolSize}"/>
    <property name="idleTimeout" value="${Jdbc_IdleTimeOut}" />
    <property name="maxLifetime" value="${Jdbc_MaxLifeTime}" />
    <property name="connectionTimeout" value="${Jdbc_ConnTimeOut}" />

    <property name="dataSourceProperties">
        <props>
            <prop key="url">${Jdbc_UID_Primary}</prop>
            <prop key="user">${Jdbc_UserId}</prop>
            <prop key="password">${Jdbc_Password}</prop>
        </props>
    </property>
    </bean>

<bean id="UID_Primary_DataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="HikariConfig_UId_Primary" />
    </bean>

Не удалось зарегистрировать компонент, говоря, что свойство url базы данных - url не существует в целевом классе com.ibm.db2.jcc.DB2SimpleDataSource. ниже приведена полная трассировка стека ..

com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
                                     org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UID_Primary_DataSource' defined in class path resource [config/SpringDbContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zaxxer.hikari.HikariDataSource]: Constructor threw exception; nested exception is java.lang.RuntimeException: Property url does not exist on target class com.ibm.db2.jcc.DB2SimpleDataSource
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:278)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1114)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1017)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at com.deere.u90.iafservice.unifieduser.application.ApplicationRegistry.loadSpringLdapContext(ApplicationRegistry.java:

любая помощь очень ценится.

спасибо ..

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы, кажется, ошиблись в нескольких вещах. Вы не опубликовали значение переменной $ {Jdbc_DataSourceClassName}, если оно, по-видимому, разрешается в DB2SimpleDataSource во время выполнения. В этой теме IBM KnowledgeCenter этот источник данных не может быть объединен в пул, и, поскольку вы начали публикацию с «Я пытаюсь использовать пул соединений Hikari», я предполагаю, что вам нужен DS с возможностью объединения, такой как com.ibm.db2 .jcc.DB2ConnectionPoolDataSource, как описано здесь . Вторая проблема заключается в том, что классы источников данных DB2 не поддерживают свойство url, его поддерживает только интерфейс DB2 DriverManager. В разделе KC для абстрактной базы классов источников данных DB2, DB2BaseDataSource , написано

Вы можете установить все свойства в DataSource или в параметре url в вызов DriverManager.getConnection.

url не является одним из перечисленных свойств, поэтому вам потребуется установить соединение с источником данных, используя свойства имени хоста, порта и т. Д.

0 голосов
/ 27 июня 2018

Я подключился к Hikari , используя пружинную загрузку, но не с конфигурацией xml . Смотрите мой пост здесь

Я думаю, добавление свойства ниже должно исправить ошибку.

<property name="jdbcUrl" value="" />
<property name="username" value="" />
<property name="password" value="" />
...