Constantine Plotnikov created ARIES-1622:
--------------------------------------------
Summary: NPE at
org.apache.aries.jpa.container.impl.ManagedEMF#createAndPublishEMF
Key: ARIES-1622
URL: https://issues.apache.org/jira/browse/ARIES-1622
Project: Aries
Issue Type: Bug
Components: JPA
Affects Versions: jpa-2.4.0
Environment: Apache Felix 5.6, Java HotSpot(TM) 64-Bit Server VM
(build 25.102-b14, mixed mode), Windows 7, EclipseLink 2.6.3
Reporter: Constantine Plotnikov
Priority: Critical
When stopping OSGi Framework NullPointerException is thrown in rare cases
(approx. 1/20) at line
{code}
reg = uctx.registerService(EntityManagerFactory.class, emf, props);
{code}
Stacktrace:
{code}
*ERROR* [org.osgi.service.cm.ManagedService, id=49, unregistered]: Unexpected
problem updating configuration org.apache.aries.jpa.VehicleModel
java.lang.NullPointerException
at
org.apache.aries.jpa.container.impl.ManagedEMF.createAndPublishEMF(ManagedEMF.java:132)
at
org.apache.aries.jpa.container.impl.ManagedEMF.updated(ManagedEMF.java:125)
at
org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189)
at
org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152)
at
org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85)
at
org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.provide(ConfigurationManager.java:1444)
at
org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1400)
at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:143)
at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:110)
at java.lang.Thread.run(Thread.java:745)
{code}
At this point the bundle in the INSTALLED(2) state despite of previous check
for that condition and uctx is null. Also I have seen this problem when
updating the bundle with EMF using .
I think there should be a check for uctx == null.
The exception is followed by the following exception when in process of
updating bundle:
{code}
Exception [EclipseLink-7156] (Eclipse Persistence Services -
2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Unable to find the class named
[com.convista.hfi.example.jpa_osgi.car_model.Vehicle]. Ensure the class
name/path is correct and available to the classloader.
Internal Exception: java.lang.ClassNotFoundException:
com.convista.hfi.example.jpa_osgi.car_model.Vehicle not found by
org.eclipse.persistence.jpa [40]
at
org.eclipse.persistence.exceptions.ValidationException.unableToLoadClass(ValidationException.java:2007)
at
org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListenerMetadata.getClass(EntityListenerMetadata.java:227)
at
org.eclipse.persistence.internal.jpa.metadata.listeners.EntityClassListenerMetadata.process(EntityClassListenerMetadata.java:81)
at
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processListeners(EntityAccessor.java:1226)
at
org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.addEntityListeners(MetadataProcessor.java:140)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:637)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303)
at
Proxyaf83b3fa_9eaf_4470_a848_4832897607c5.createEntityManager(Unknown Source)
at com.convista.hfi.dpr.fips.support.JpaRunner.call(JpaRunner.java:33)
at
com.convista.hfi.example.jpa_osgi.car_model.CarEntityFactory.create(CarEntityFactory.java:23)
at
com.convista.hfi.example.jpa_osgi.car_model.CarEntityFactory.create(CarEntityFactory.java:23)
at Proxyce6c53da_ebe4_47ad_bfb2_5188dff8be43.create(Unknown Source)
at com.confista.hfi.dpr.runner.OsgiRunnerIT.test(OsgiRunnerIT.java:80)
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:497)
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.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
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
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
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:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException:
com.convista.hfi.example.jpa_osgi.car_model.Vehicle not found by
org.eclipse.persistence.jpa [40]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)
at
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1926)
at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:978)
at
org.apache.aries.jpa.eclipselink.adapter.UnionClassLoader.findClass(UnionClassLoader.java:74)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at
org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:142)
at
org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListenerMetadata.getClass(EntityListenerMetadata.java:224)
... 41 more
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)