JPA Container BundleDelegatingClassLoader should look for classes in the
provider bundle, too
---------------------------------------------------------------------------------------------
Key: ARIES-681
URL: https://issues.apache.org/jira/browse/ARIES-681
Project: Aries
Issue Type: Bug
Components: JPA
Affects Versions: 0.3
Environment: Glassfish 3.0 (EclipseLink 2.0.2), Glassfish 3.1
(EclipseLink 2.2)
Reporter: Balazs Zsoldos
Currently the BundleDelegatingClassLoader in JPA container only looks for
classes in the bundle of the entitymanager. However the JPA implementation
Eclipselink needs some classes from itself. The reason is that in entity
classes the properties that hold mapping of One-To-Many are converted to
EclipseLink list type. See the following exception stacktrace:
Internal Exception: java.lang.ClassNotFoundException:
org.eclipse.persistence.indirection.IndirectList
at
org.eclipse.persistence.exceptions.ValidationException.classNotFoundWhileConvertingClassNames(ValidationException.java:2317)
at
org.eclipse.persistence.internal.queries.InterfaceContainerPolicy.convertClassNamesToClasses(InterfaceContainerPolicy.java:123)
at
org.eclipse.persistence.mappings.CollectionMapping.convertClassNamesToClasses(CollectionMapping.java:788)
at
org.eclipse.persistence.descriptors.ClassDescriptor.convertClassNamesToClasses(ClassDescriptor.java:1458)
at
org.eclipse.persistence.sessions.Project.convertClassNamesToClasses(Project.java:362)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:322)
... 83 more
Caused by: java.lang.ClassNotFoundException:
org.eclipse.persistence.indirection.IndirectList
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:744)
at org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61)
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1656)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at
org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:604)
at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1487)
at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:897)
at
org.apache.aries.jpa.container.unit.impl.BundleDelegatingClassLoader$1.run(BundleDelegatingClassLoader.java:50)
at
org.apache.aries.jpa.container.unit.impl.BundleDelegatingClassLoader$1.run(BundleDelegatingClassLoader.java:47)
at java.security.AccessController.doPrivileged(Native Method)
at
org.apache.aries.jpa.container.unit.impl.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:47)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:88)
at
org.eclipse.persistence.internal.queries.InterfaceContainerPolicy.convertClassNamesToClasses(InterfaceContainerPolicy.java:120)
... 87 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira