2010/5/25 Agustín Gañán <[email protected]>

> 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?
>
>
Yes. Please create jira issue with "fix for" 1.3.4. Then attach a patch.



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



-- 
Regards,
Rafał Rusin
http://rrusin.blogspot.com

Reply via email to