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)
1 ACCEPTED SOLUTION

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?
5 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?
One Star

Re: [resolved] Oracle DB access via Karaf

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