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> Date : 07/01/2019 21:34 (GMT+04:00) À : 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 = 147 service.scope = singletonProvided 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 = 124 service.scope = singletonProvided 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 = 126 service.scope = singletonProvided 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.preCalljava.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 moreCaused 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 moreCaused 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> 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 http://blog.nanthrax.net Talend - http://www.talend.com