Hi again,

I've a patch to solve this issue:
- Adding in ode-jbi.xml (ode-jbi-bundle project) config file the
persistence provider property
- Adding in org.apache.ode.store.jpa.DbConfStoreConnectionFactory
(ode-bpel-store) the persistence provider property ("hardcoded" but I
cannot find the way to set as a property).

Should I create a JIRA issue or this is not an issue at all for the ODE team?

thanks,

Agus


---------- Mensaje reenviado ----------
De: Agustín Gañán <[email protected]>
Fecha: 25 de mayo de 2010 10:32
Asunto: ODE 1.3.4rc1 + EclipseLink 2.0 in SMX 4.2
Para: [email protected]


Hi all,

I'm working on a project in wich we want to use ODE (1.3.4rc1
installed as a bundle) in the process orchestration and EclipseLink
(2.0) in the data access layer in Servicemix 4.2  but I found an
integration issue.

ODE's data layer is using JPA 1.0 but EclipseLinkg is using JPA 2.0.
In theory, the OSGI environment support this. I can install ODE
without problem and then install EclipseLink succesfully too. The
problem cames when I restart the container.

In the restart, when ODE is starting I have this error [1] and
OdeBpelEngine fails to start:

Caused by: java.lang.ClassCastException:
org.eclipse.persistence.jpa.PersistenceProvider cannot be cast to
javax.persistence.spi.PersistenceProvider

The problem is the way in wich ODE look for the PersitenceProvider
class to create the EntityManagerFactory (in
org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl.init())

The flow to get the ODE persitence provider class is:

1.- The persitenceProvider property (javax.persistence.provider)
passed to create the entityManager (is null, I don't know why)

2.- The OSGI services registered under the interface
"javax.persistence.spi.PersistenceProvider". There are two (the ODE
one, registered first and the EclipseLink).
The osgiLocator returns always the last service registered, in my case
the EclipseLink persitence provider and this is the origin of the
classCastExcpecion (JPA 1.0 vs JPA 2.0)

3.- The class defined in the bundle classpath (never reach this point).

Does anyone knows how can I set correctly the
javax.persistence.provider property in the ode-dao persitence unit? I
can see in the sources (persitence.xml in ode-dao-jpa) that is defined
but it seems that's is being ignored.

Thanks all,

Agus

[1] 10:00:20,414 | WARN  | xtenderThread-61 | ComponentRegistryImpl
       | mix.nmr.core.ServiceRegistryImpl   49 | Unable to register
service OdeBpelEngine with properties {NAME=OdeBpelEngine,
objectClass=[Ljava.lang.String;@19a2b3d, service.id=269,
TYPE=service-engine}. Reason: javax.jbi.JBIException: Fatal error
javax.jbi.JBIException: Fatal error
       at org.apache.ode.jbi.OdeLifeCycle.init(OdeLifeCycle.java:152)
       at 
org.apache.servicemix.jbi.deployer.artifacts.ComponentImpl$ComponentWrapper.init(ComponentImpl.java:249)
       at 
org.apache.servicemix.jbi.runtime.impl.ComponentRegistryImpl.doRegister(ComponentRegistryImpl.java:98)
       at 
org.apache.servicemix.jbi.runtime.impl.ComponentRegistryImpl.doRegister(ComponentRegistryImpl.java:38)
       at 
org.apache.servicemix.nmr.core.ServiceRegistryImpl.register(ServiceRegistryImpl.java:47)
       at 
org.apache.servicemix.nmr.osgi.OsgiServiceRegistryTracker.addingService(OsgiServiceRegistryTracker.java:79)
       at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
       at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
       at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
       at 
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
       at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:864)
       at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732)
       at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
       at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3619)
       at org.apache.felix.framework.Felix.access$000(Felix.java:39)
       at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:667)
       at 
org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:97)
       at org.apache.felix.framework.Felix.registerService(Felix.java:2760)
       at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
       at 
org.apache.servicemix.jbi.deployer.impl.Deployer.registerService(Deployer.java:775)
       at 
org.apache.servicemix.jbi.deployer.impl.Deployer.registerComponent(Deployer.java:437)
       at 
org.apache.servicemix.jbi.deployer.impl.ComponentInstaller.initComponent(ComponentInstaller.java:427)
       at 
org.apache.servicemix.jbi.deployer.impl.ComponentInstaller.install(ComponentInstaller.java:153)
       at 
org.apache.servicemix.jbi.deployer.impl.Deployer.registerDeployedComponent(Deployer.java:670)
       at 
org.apache.servicemix.jbi.deployer.impl.Deployer$1.addingService(Deployer.java:242)
       at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
       at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
       at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
       at 
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
       at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:864)
       at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732)
       at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
       at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3619)
       at org.apache.felix.framework.Felix.access$000(Felix.java:39)
       at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:667)
       at 
org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:97)
       at org.apache.felix.framework.Felix.registerService(Felix.java:2760)
       at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
       at 
org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean.registerService(OsgiServiceFactoryBean.java:310)
       at 
org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean.registerService(OsgiServiceFactoryBean.java:279)
       at 
org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean$Executor.registerService(OsgiServiceFactoryBean.java:95)
       at 
org.springframework.osgi.service.exporter.support.internal.controller.ExporterController.registerService(ExporterController.java:40)
       at 
org.springframework.osgi.service.dependency.internal.DefaultMandatoryDependencyManager.startExporter(DefaultMandatoryDependencyManager.java:325)
       at 
org.springframework.osgi.service.dependency.internal.DefaultMandatoryDependencyManager.checkIfExporterShouldStart(DefaultMandatoryDependencyManager.java:267)
       at 
org.springframework.osgi.service.dependency.internal.DefaultMandatoryDependencyManager.discoverDependentImporterFor(DefaultMandatoryDependencyManager.java:260)
       at 
org.springframework.osgi.service.dependency.internal.DefaultMandatoryDependencyManager.addServiceExporter(DefaultMandatoryDependencyManager.java:191)
       at 
org.springframework.osgi.service.dependency.internal.MandatoryDependencyBeanPostProcessor.postProcessAfterInitialization(MandatoryDependencyBeanPostProcessor.java:46)
       at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:361)
       at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1344)
       at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
       at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
       at java.security.AccessController.doPrivileged(Native Method)
       at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
       at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
       at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
       at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
       at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
       at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
       at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
       at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
       at 
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)
       at 
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
       at 
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
       at 
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
       at 
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136)
       at java.lang.Thread.run(Thread.java:619)
Caused by: javax.persistence.PersistenceException: Provider error.
Provider: null
       at 
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:109)
       at 
org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl.init(BPELDAOConnectionFactoryImpl.java:113)
       at org.apache.ode.il.dbutil.Database.createDaoCF(Database.java:291)
       at org.apache.ode.jbi.OdeLifeCycle.initDao(OdeLifeCycle.java:269)
       at org.apache.ode.jbi.OdeLifeCycle.init(OdeLifeCycle.java:129)
       ... 65 more
Caused by: java.lang.ClassCastException:
org.eclipse.persistence.jpa.PersistenceProvider cannot be cast to
javax.persistence.spi.PersistenceProvider
       at 
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:103)
       ... 69 more

Reply via email to