[resolved] Oracle DB access via Karaf

One Star

[resolved] Oracle DB access via Karaf

We are trying to configure the oracle database access through karaf.

Below is the link that we used.
https://github.com/cschneider/Karaf-Tutorial/blob/master/db/datasource/datasource-oracle.xml
The blueprint for datasource-oracle.xml for ojdbc6.jar:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="dataSource" class="oracle.jdbc.OracleDriver">
<property name="url" value="jdbcSmiley Surprisedracle:thin:@10.75.38.124:1521Smiley Very Happy20KSTN"/>
<property name="user" value="workflow_app"/>
<property name="password" value="pass_w0rd"/>
</bean>

<service interface="javax.sql.DataSource" ref="dataSource">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/oracleds"/>
</service-properties>
</service>
</blueprint>

However, in karaf list we get the following error.
In Karaf list:
wrap_mvn_ojdbc_ojdbc_11.2.0.2.0 (0)
datasource-oracle.xml (0.0.0)
karaf@trun> display-exception
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to find property descriptor url on class oracle.jdbc.OracleDriver
at org.apache.aries.blueprint.container.BeanRecipe.getPropertyDescriptor(BeanRecipe.java:820)
at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:802)
at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:773)
at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:754)
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:720)
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:640)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:331)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Accepted Solutions
Employee

Re: [resolved] Oracle DB access via Karaf

I just checked on my karaf and you are right. The problem is that the URL property has to be in uppercase. I just corrected the git datasource file. The bean should now look like this:
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="jdbcSmiley Surprisedracle:thin:@localhost:1521Smiley Surprisedrcl"/>
<property name="user" value="test"/>
<property name="password" value="test"/>
</bean>
Does this work for you?

All Replies
Employee

Re: [resolved] Oracle DB access via Karaf

You are using the wrong class from Oracle. Try to use oracle.jdbc.pool.OracleDataSource instead of OracleDriver.
Christian
One Star

Re: [resolved] Oracle DB access via Karaf

The result was the same using oracle.jdbc.pool.OracleDataSource.
Thanks.
Employee zbe
Employee

Re: [resolved] Oracle DB access via Karaf

I suspect you still inadvertently use the old blueprint file with the wrong class. Bundles (and the blueprint file is seen as bundle by the OSGi container) are cached in the data directory. Make sure to explicitly uninstall the datasource-oracle.xml bunlde before installing the new one. Removing bundles or blueprint configurations from the deploy folder does not lead to uninstallation of the bundle.
oracle.jdbc.pool.OracleDataSource is definetly the way to go.
Zsolt
Employee

Re: [resolved] Oracle DB access via Karaf

I just checked on my karaf and you are right. The problem is that the URL property has to be in uppercase. I just corrected the git datasource file. The bean should now look like this:
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="jdbcSmiley Surprisedracle:thin:@localhost:1521Smiley Surprisedrcl"/>
<property name="user" value="test"/>
<property name="password" value="test"/>
</bean>
Does this work for you?
Highlighted
One Star

Re: [resolved] Oracle DB access via Karaf

Excellent.... It works. Thanks a lot...

2019 GARNER MAGIC QUADRANT FOR DATA INTEGRATION TOOL

Talend named a Leader.

Get your copy

OPEN STUDIO FOR DATA INTEGRATION

Kickstart your first data integration and ETL projects.

Download now

What’s New for Talend Summer ’19

Watch the recorded webinar!

Watch Now

An API-First Approach to Modernizing Applications

Learn how to use an API-First Approach to Modernize your Applications

Watch Now

Talend API Designer – Technical Overview

Take a look at this technical overview video of Talend API Designer

Watch Now

Getting Started with APIs

Find out how to get started with APIs

Read