【发布时间】:2014-03-08 19:16:30
【问题描述】:
我正在尝试在 Apache Karaf 中使用 Oracle jdbc 6 驱动程序,但我遇到了一些困难。特别是,我正在尝试利用驱动程序通过 Camel SQL 组件访问我的数据库。
我的蓝图文件如下所示:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="dataSourceName" value="XXXXX" />
<property name="TNSEntryName" value="XXXXX" />
<property name="DriverType" value="XXXXX" />
<property name="user" value="XXXXX" />
<property name="password" value="XXXXX" />
</bean>
<!-- configure the Camel SQL component to use the JDBC data source -->
<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent">
<property name="location" value="file:${karaf.home}/etc/sqlStatements.properties" />
</bean>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="metis123">
<from uri="timer:foo?period=5000" />
<to uri="sql:{{sql.check_rwos_update}}" id="sqlCheckRwosUpdate" />
<to uri="log:com.hveiga?showAll=true" />
</route>
</camelContext>
</blueprint>
当我将文件放入 Karaf 的 deploy 目录时,我收到以下异常:
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to instantiate components
...
Caused by: java.lang.NoClassDefFoundError: javax/sql/DataSource
...
Caused by: java.lang.ClassNotFoundException: javax.sql.DataSource not found by oracle.ojdbc6 [131]
所以似乎是 oracle 驱动程序无法找到某个类的问题。我使用 apache-felix maven 插件osgified oracle jar,但也许我做错了,MANIFEST.MF 文件丢失了一些东西。
知道我可能缺少什么吗?
【问题讨论】:
-
你能解释一下你是怎么安装你的蓝图的吗?从新鲜的 karaf(哪个版本)开始。您肯定会以某种方式安装 oracle 驱动程序。
-
要安装我的蓝图,我只需将 xml 和 oracle 驱动程序 jar 文件放到部署目录中。 Karaf 版本是 2.3.3。
标签: java sql osgi apache-camel apache-karaf