Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] JDBC Driver Class not find using eclipseLink in OSGi

Hi all,

I have implemented an OSGi service using EclipseLink for persisting
data. The persistence-unit is configured to use the
org.apache.derby.jdbc.EmbeddedDriver. When the EntityManager is created
I get the following exception:

Exception [EclipseLink-4003] (Eclipse Persistence Services - 1.0.2
(Build 20081024)): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error.  Class
[org.apache.derby.jdbc.EmbeddedDriver] not found.
	at
org.eclipse.persistence.exceptions.DatabaseException.configurationErrorC
lassNotFound(DatabaseException.java:81)
	at
org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(Defaul
tConnector.java:265)
	at
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnect
or.java:84)
	at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(Dat
asourceLogin.java:164)
	at
org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.conne
ctInternal(DatasourceAccessor.java:324)
	at
org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connect
Internal(DatabaseAccessor.java:264)
	at
org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.conne
ct(DatasourceAccessor.java:407)
	at
org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(C
onnectionPool.java:130)
	at
org.eclipse.persistence.sessions.server.ConnectionPool.startUp(Connectio
nPool.java:367)
	at
org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSess
ion.java:500)
	at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(Data
baseSessionImpl.java:606)
	at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(
EntityManagerFactoryProvider.java:211)
	at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(Entit
yManagerSetupImpl.java:246)
	at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerS
ession(EntityManagerFactoryImpl.java:69)
	at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEnti
tyManagerImpl(EntityManagerFactoryImpl.java:118)
	at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEnti
tyManagerImpl(EntityManagerFactoryImpl.java:112)
	at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEnti
tyManager(EntityManagerFactoryImpl.java:100)
	at
org.eclipse.smila.store.recordstore.impl.RecordStoreImpl.activate(Record
StoreImpl.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceC
omponent.java:118)
	at
org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(Serv
iceComponentProp.java:149)
	at
org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(Service
ComponentProp.java:290)
	at
org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceP
rocess.java:578)
	at
org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:50
)
	at
org.eclipse.osgi.framework.internal.core.ServiceUse$1.run(ServiceUse.jav
a:108)
	at java.security.AccessController.doPrivileged(Native Method)
	at
org.eclipse.osgi.framework.internal.core.ServiceUse.getService(ServiceUs
e.java:106)
	at
org.eclipse.osgi.framework.internal.core.ServiceRegistrationImpl.getServ
ice(ServiceRegistrationImpl.java:345)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(Bu
ndleContextImpl.java:884)
	at
org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProce
ss.java:640)
	at
org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(Compo
nentReference.java:110)
	at
org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentR
eference.java:301)
	at
org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
(ServiceComponentProp.java:370)
	at
org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProc
ess.java:408)
	at
org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:313)
	at
org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.jav
a:213)
	at
org.eclipse.osgi.framework.internal.core.FilteredServiceListener.service
Changed(FilteredServiceListener.java:94)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
(BundleContextImpl.java:1224)
	at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventMana
ger.java:195)
	at
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchrono
us(ListenerQueue.java:141)
	at
org.eclipse.osgi.framework.internal.core.Framework.publishServiceEventPr
ivileged(Framework.java:1603)
	at
org.eclipse.osgi.framework.internal.core.Framework.publishServiceEvent(F
ramework.java:1578)
	at
org.eclipse.osgi.framework.internal.core.ServiceRegistrationImpl.<init>(
ServiceRegistrationImpl.java:103)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.createService
Registration(BundleContextImpl.java:657)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerServi
ce(BundleContextImpl.java:609)
	at
org.eclipse.equinox.internal.ds.InstanceProcess.registerService(Instance
Process.java:492)
	at
org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(Instance
Process.java:188)
	at
org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.ja
va:443)
	at
org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:
187)
	at
org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:6
60)
	at
org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager
.java:627)
	at
org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
	at java.lang.Thread.run(Thread.java:595)


If I add org.apache.derby.jdbc to the import packages of my bundle
containing the service the driver class is found, of course.
However, I don't want to add any dependencies on JDBC drivers to my
bundle manifest. That would mean that besides using EclipseLink my
bundle would only work with those databases for which JDBC drivers are
imported in my bundle.
It should be possible to switch to different databases by configuring
the properties in persistence.xml and not having to adopt imports in the
manifest!

Are there any solutions available for this problem? 

Bye,
Daniel




Back to the top