2014-02-11 2 views
2

Я пытаюсь использовать драйвер Oracle jdbc 6 в Apache Karaf buy Я столкнулся с некоторыми трудностями. В частности, я пытаюсь использовать драйвер для доступа к моей базе данных через компонент Camel SQL.Использование драйвера Oracle в Karaf с Apache Camel SQL Component

Мой файл план выглядит следующим образом:

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

Когда я помещаю свой файл в каталог deploy в Karaf я получаю следующее исключение:

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 не в состоянии найти какой-либо класс. У меня есть osgified oracle jar с помощью плагина apache-felix maven, но, возможно, я что-то делаю неправильно, а файл MANIFEST.MF что-то не хватает.

Любая идея, что мне не хватает?

+0

Можете ли вы объяснить, что вы делаете, чтобы установить свой план. Начиная с нового карафа (какая версия). Вы, конечно же, устанавливаете драйвер oracle. –

+0

Чтобы установить мой проект, я просто удаляю файлы jar xml и oracle driver в каталог развертывания. Версия Karaf - 2.3.3. – hveiga

ответ

2

я решил мою проблему, добавив к MANIFEST.MF следующую строку:

Import-Package: javax.sql, javax.naming, javax.management, org.ietf.jgss 

Спасибо за помощь!

1

Мне пришлось сделать аналогичную упаковку драйвера Oracle в комплекте с использованием Maven. Это то, что я имел, что может помочь:

Oracle сверток:

Export-Package: oracle.jdbc, oracle.jdbc.driver 
Import-Package: !javax.*, !oracle.* 

Другие пучки, которые относятся к нему только что Import-Package: * и Maven заполнены в покое.

+0

Спасибо за ваш комментарий. Я попытался, но получил: 'org.osgi.framework.BundleException: неразрешенное ограничение в пакете oracle.ojdbc6 [131]: не удалось разрешить 131.1: отсутствует требование [131.1] osgi.wiring.package; (osgi.wiring.package =! javax. *) ' – hveiga

+0

Вы используете плагин maven bundle? Я ожидал, что это приведет к таким параметрам, как «Игнорировать-Пакет: javax.sql» в сгенерированном манифесте. – bgossit

+0

В файле манифеста нет файла Ignore-Package для файла jar файла oracle. – hveiga

2

Возможно, вас интересует мой karaf db tutorial.

Простое отключение драйвера db, вероятно, не работает. Я описываю там использование протокола wrap: pax url. Таким образом, драйверы в комплекте с bnd и настройками по умолчанию «на лету». Таким образом, это уже может дать вам рабочую систему. Для использования в производстве лучше всего связать драйверы с помощью проекта maven, например bgossit. Вы найдете много примеров для этого на servicemix bundles.

Смежные вопросы