Apache Karaf 4.0.4蓝图ClassNotFoundException oracle.jdbc.pool.OracleDataSource

时间:2016-03-14 00:02:25

标签: oracle osgi classnotfoundexception karaf

我有一个蓝图文件,我正在部署它来部署文件夹,该文件夹创建数据源并将其注册为服务。在功能文件中,我正在包装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>

2 个答案:

答案 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>