我有一个蓝图文件,我正在部署它来部署文件夹,该文件夹创建数据源并将其注册为服务。在功能文件中,我正在包装ojdbc7和ucp.jar(版本12.1.0.2)和deployin。我有另一个访问数据源的bundle,在插入记录时,我在运行时获得了ClassNotFoundException oracle.jdbc.pool.OracleDataSource。部署所有捆绑包没有问题。我看到两个oracle jar导出正确的包。我正在尝试创建一个连接池,如下面的蓝图文件
<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>
答案 0 :(得分:0)
您正在将数据源类设置为connectionFactoryClassName中的字符串。 PoolDataSourceFactory似乎使用错误的类加载器加载此类,因此无效。
OSGi is pax-jdbc中DataSources的工作解决方案。另请参阅Oracle driver adapter。在karaf中,您只需加载功能并创建配置。
答案 1 :(得分:0)
请参阅UCP configuration with 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>