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

Reply via email to