Схема Apache Karaf 4.0.4 ClassNotFoundException oracle.jdbc.pool.OracleDataSource

У меня есть файл плана, который я развертываю для развертывания папки, которая создает источник данных и регистрирует его как службу. В файле функций я оборачиваю ojdbc7 и ucp.jar (обе версии 12.1.0.2) и разворачиваю. У меня есть еще один пакет, который обращается к источнику данных, и при вставке записи я получаю ClassNotFoundException oracle.jdbc.pool.OracleDataSource во время выполнения. Нет проблем с развертыванием всех пакетов. Я вижу, что обе банки оракула экспортируют правильные пакеты. Я пытаюсь создать пул соединений, как показано ниже в файле схемы.

    <bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="URL" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.pwd}" />
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource" />
<property name="connectionPoolName" value="oracle_pool" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
<property name="initialPoolSize" value="5" />
  </bean>

person behal    schedule 14.03.2016    source источник


Ответы (2)


Вы устанавливаете класс источника данных как строку в connectionFactoryClassName. PoolDataSourceFactory, кажется, загружает этот класс, используя неправильный загрузчик классов, так что это не работает.

Рабочим решением для источников данных в OSGi является pax-jdbc. . См. также адаптер драйвера Oracle. В karaf вы просто загружаете функции и создаете конфиг.

person Christian Schneider    schedule 14.03.2016
comment
Спасибо, Кристиан, где я могу найти пример использования pax-jdbc и aries-pool. Я не понимаю, как получить pax jdbc с помощью файла функций. - person behal; 14.03.2016
comment
неважно, я понял, как это сделать, спасибо, и pax jdbc отлично работает. Просто любопытно, нет ли способа заставить приведенный выше код работать? Вот как Oracle рекомендует создавать пул соединений - person behal; 14.03.2016

См. конфигурацию UCP с Spring.

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
<!-- Initialization for data source --> 
<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceImpl"> 
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource"/> 
<property name="URL" value="jdbc:oracle:thin:@//host:port/service_name"/> 
<property name="user" value="scott"/> 
<property name="password" value="tiger"/> 
<property name="maxPoolSize" value="10"/> 
<property name="initialPoolSize" value="5"/> 
</bean> 
<!-- Definition for EmpJDBCTemplate bean --> 
<bean id="EmpJDBCTemplate" class="test.EmpJDBCTemplate"> 
<property name="dataSource" ref="dataSource"/> 
</bean> 
</beans>
person Nirmala    schedule 21.03.2016