Happy to see it works :) Regards,
François Papon fpa...@apache.org Le 08/01/2019 à 00:55, Matteo Rulli a écrit : > The jndi feature! That did the trick! > > Thank you Francois and Jean-Baptiste for your help and support. > > And thanks to the Karaf team for the new 4.2.x line ☺. > > Best regards, > Matteo > >> On 7 Jan 2019, at 18:43, francois.papon <francois.pa...@openobject.fr >> <mailto:francois.pa...@openobject.fr>> wrote: >> >> Hi, >> >> Did you installed the "jndi" feature? >> >> Regards, >> >> Francois >> >> >> >> Envoyé depuis mon smartphone Samsung Galaxy. >> >> -------- Message d'origine -------- >> De : Matteo Rulli <matteo.ru...@gmail.com >> <mailto:matteo.ru...@gmail.com>> >> Date : 07/01/2019 21:34 (GMT+04:00) >> À : user@karaf.apache.org <mailto:user@karaf.apache.org> >> Objet : Re: OpenJPA 3 and Karaf 4.2 >> >> 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 >> >