What's your datasource name in the persistence.xml ? Regards JB
On 07/01/2019 18:34, Matteo Rulli wrote: > Hi! > > Thank you for the feedback. > > It seems the persistence unit name is ok. The blueprint component is > correctly wired with the services: > > karaf@root()> services -u myjpaservice.impl > > myjpaservice.impl (18) uses: > ---------------------------- > [javax.persistence.spi.PersistenceProvider] > [javax.sql.DataSource] > [javax.persistence.EntityManagerFactory] > [javax.transaction.TransactionManager, > javax.transaction.TransactionSynchronizationRegistry, > javax.transaction.UserTransaction, > org.apache.geronimo.transaction.manager.RecoverableTransactionManager] > > And both EntityManager and TransactionManager are available on the > service registry: > > karaf@root()> service:list EntityManager > [javax.persistence.EntityManager] > --------------------------------- > osgi.unit.name = myPersistenceUnit > service.bundleid = 18 > service.id <http://service.id> = 147 > service.scope = singleton > Provided by : > myjpaservice.impl (18) > > karaf@root()> service:list TransactionManager > [javax.transaction.TransactionManager, > javax.transaction.TransactionSynchronizationRegistry, > javax.transaction.UserTransaction, > org.apache.geronimo.transaction.manager.RecoverableTransactionManager] > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ > service.bundleid = 110 > service.id <http://service.id> = 124 > service.scope = singleton > Provided by : > pax-transx-tm-geronimo (110) > Used by: > OpenJPA Aggregate Jar (69) > OPS4J Pax JDBC Pooling DBCP2 (101) > myjpaservice.impl (18) > > [org.ops4j.pax.transx.tm.TransactionManager] > -------------------------------------------- > service.bundleid = 110 > service.id <http://service.id> = 126 > service.scope = singleton > Provided by : > pax-transx-tm-geronimo (110) > > Besides, the tables in the postgresqlDB database are correctly created > during pax-exam test boot-up: that should be a sign that the pax-jdbc > and JPA are running and well configured, right? The test fails as soon > as the injected entityManager is used, spitting out the stacktrace below. > > Could you please suggest what else I can check to identify what the > problem could be? The same project works fine with the previous version > of Karaf and OpenJPA: could the problem be triggered by some version > incompatibilities like the one you mentioned in your previous email? > > Thank you very much, > Matteo > > > Complete stack trace: > > 18:26:02,645 | WARN | ion(3)-127.0.0.1 | JpaInterceptor > | 29 - org.apache.aries.jpa.blueprint - 2.7.0 | Exception from > EmSupplier.preCall > java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy70.createEntityManager(Unknown Source) ~[?:?] > at > org.apache.aries.jpa.support.impl.EMSupplierImpl.createEm(EMSupplierImpl.java:68) > ~[?:?] > at > org.apache.aries.jpa.support.impl.EMSupplierImpl.get(EMSupplierImpl.java:86) > ~[?:?] > at > org.apache.aries.jpa.support.osgi.impl.EmProxy.invoke(EmProxy.java:38) > ~[?:?] > at com.sun.proxy.$Proxy71.getProperties(Unknown Source) ~[?:?] > at Proxy6f73aaf4_20c4_4127_846f_6f5c625740c9.getProperties(Unknown > Source) ~[?:?] > at > org.apache.aries.jpa.blueprint.impl.JpaInterceptor.isResourceLocalInternal(JpaInterceptor.java:109) > ~[?:?] > at > org.apache.aries.jpa.blueprint.impl.JpaInterceptor.isResourceLocal(JpaInterceptor.java:99) > ~[?:?] > at > org.apache.aries.jpa.blueprint.impl.JpaInterceptor.preCall(JpaInterceptor.java:62) > ~[?:?] > at > org.apache.aries.blueprint.proxy.Collaborator.preInvoke(Collaborator.java:73) > ~[?:?] > at Proxy2b756db4_920f_4f1f_ab3f_93eac79d479c.addEntity(Unknown Source) > ~[?:?] > at > com.flairbit.examples.postgresjpa.TestModule.testCase(TestModule.java:118) > ~[?:?] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) > ~[?:?] > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > ~[?:?] > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) > ~[?:?] > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) > ~[?:?] > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) > ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97) > ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84) > ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75) > ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43) > ~[?:?] > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) ~[?:?] > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) ~[?:?] > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) ~[?:?] > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) ~[?:?] > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) ~[?:?] > at org.junit.runners.ParentRunner.run(ParentRunner.java:363) ~[?:?] > at org.junit.runner.JUnitCore.run(JUnitCore.java:137) ~[?:?] > at org.junit.runner.JUnitCore.run(JUnitCore.java:115) ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124) > ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97) > ~[?:?] > at > org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73) > ~[?:?] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at > org.ops4j.pax.exam.rbc.internal.RemoteBundleContextImpl.remoteCall(RemoteBundleContextImpl.java:85) > ~[97:org.ops4j.pax.exam.rbc:4.13.1] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) > ~[?:?] > at sun.rmi.transport.Transport$1.run(Transport.java:200) ~[?:?] > at sun.rmi.transport.Transport$1.run(Transport.java:197) ~[?:?] > at java.security.AccessController.doPrivileged(Native Method) ~[?:?] > at sun.rmi.transport.Transport.serviceCall(Transport.java:196) ~[?:?] > at > sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) > ~[?:?] > at > sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) > ~[?:?] > at > sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) > ~[?:?] > at java.security.AccessController.doPrivileged(Native Method) ~[?:?] > at > sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) > [?:?] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > [?:?] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > [?:?] > at java.lang.Thread.run(Thread.java:748) [?:?] > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at > org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder$2.invoke(AriesEntityManagerFactoryBuilder.java:395) > ~[?:?] > ... 58 more > Caused by: org.apache.openjpa.persistence.InvalidStateException: Could > not perform automatic lookup of EJB container's > javax.transaction.TransactionManager implementation. Please ensure that > you are running the application from within an EJB 1.1 compliant EJB > container, and then set the org.apache.openjpa.ManagedRuntime property > to the appropriate value to obtain the TransactionManager. > at > org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(AutomaticManagedRuntime.java:253) > ~[?:?] > at > org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(AbstractBrokerFactory.java:728) > ~[?:?] > at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:399) > ~[?:?] > at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:325) > ~[?:?] > at > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) > ~[?:?] > at > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212) > ~[?:?] > at > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:154) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:246) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:162) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:152) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:58) > ~[?:?] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at > org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder$2.invoke(AriesEntityManagerFactoryBuilder.java:395) > ~[?:?] > ... 58 more > Caused by: javax.naming.NoInitialContextException: Need to specify class > name in environment or system property, or as an applet parameter, or in > an application resource file: java.naming.factory.initial > at > javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) > ~[?:?] > at > javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) > ~[?:?] > at > javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350) > ~[?:?] > at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:?] > at > org.apache.openjpa.ee.RegistryManagedRuntime.getTransactionManager(RegistryManagedRuntime.java:63) > ~[?:?] > at > org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(AutomaticManagedRuntime.java:171) > ~[?:?] > at > org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(AbstractBrokerFactory.java:728) > ~[?:?] > at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:399) > ~[?:?] > at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:325) > ~[?:?] > at > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) > ~[?:?] > at > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212) > ~[?:?] > at > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:154) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:246) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:162) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:152) > ~[?:?] > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:58) > ~[?:?] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at > org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder$2.invoke(AriesEntityManagerFactoryBuilder.java:395) > ~[?:?] > ... 58 more > >> On 7 Jan 2019, at 16:01, Jean-Baptiste Onofré <j...@nanthrax.net >> <mailto:j...@nanthrax.net>> wrote: >> >> Hi Matteo, >> >> I just checked OpenJPA3 with JPA feature. The problem is about the >> javax.persistence version. Now, hibernate and eclipselink uses JPA 2.1 >> whereas OpenJPA uses JPA 2.2. >> >> So, we can have a ClassCastException while trying to deal with both >> version in the same container. >> >> That's what happening by default on the provided example. I'm >> improving it. >> >> Anyway, I don't reproduce the issue. I guess that problem is that you >> don't use the correct JNDI name in persistence.xml. >> >> Regards >> JB >> >> On 05/01/2019 22:42, Matteo Rulli wrote: >>> I tried to put together a project (here >>> <https://github.com/mrulli/myjpaservice>: >>> https://github.com/mrulli/myjpaservice) >>> to test how OpenJPA 3 and Karaf 4.2.x play together but I get the >>> following error: >>> >>> javax.naming.NoInitialContextException: Need to specify class name in >>> environment or system property, or as an applet parameter, or in an >>> application resource file: java.naming.factory.initial >>> at >>> javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) >>> ~[?:?] >>> at >>> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) >>> ~[?:?] >>> at >>> javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350) >>> ~[?:?] >>> at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:?] >>> at >>> org.apache.openjpa.ee.RegistryManagedRuntime.getTransactionManager(RegistryManagedRuntime.java:63) >>> ~[?:?] >>> at >>> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(AutomaticManagedRuntime.java:171) >>> ~[?:?] >>> at >>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(AbstractBrokerFactory.java:728) >>> ~[?:?] >>> at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:399) >>> ~[?:?] >>> at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:325) >>> ~[?:?] >>> at >>> org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) >>> ~[?:?] >>> at >>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212) >>> ~[?:?] >>> at >>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:154) >>> ~[?:?] >>> at >>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:246) >>> ~[?:?] >>> at >>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:162) >>> ~[?:?] >>> at >>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:152) >>> ~[?:?] >>> at >>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:58) >>> ~[?:?] >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>> ~[?:?] >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> ~[?:?] >>> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] >>> at >>> org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder$2.invoke(AriesEntityManagerFactoryBuilder.java:395) >>> ~[?:?] >>> ... 58 more >>> >>> A similar project works fine with OpenJPA 2.4.1 and Karaf 4.1. >>> >>> I saw an example project >>> <https://github.com/apache/karaf/blob/master/examples/karaf-jpa-example/karaf-jpa-example-features/src/main/feature/feature.xml> >>> in >>> Karaf repo but the openjpa case seems unsupported/commented out. Is >>> openjpa 3 supported in Karaf 4.2? >>> >>> Thank you for your help, >>> >>> Matteo >>> >>> >> >> -- >> Jean-Baptiste Onofré >> jbono...@apache.org <mailto:jbono...@apache.org> >> http://blog.nanthrax.net >> Talend - http://www.talend.com > -- Jean-Baptiste Onofré jbono...@apache.org http://blog.nanthrax.net Talend - http://www.talend.com