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

Reply via email to