[
https://issues.apache.org/jira/browse/ARIES-681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Balazs Zsoldos updated ARIES-681:
---------------------------------
Attachment: classloadingFromMultipleProviderDuringQuery.0.3.patch
The attached file contains a patch for version 0.3 (till now I tested with the
release only). I guess the patch is almost the same for the version in the SVN
trunk.
The patch changes the Temp and the normal DelegatingClassLoader to search
resources and classes in the PU bundle first and if it does not find it checks
the bundle of the JPA provider.
> 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
> Attachments: classloadingFromMultipleProviderDuringQuery.0.3.patch
>
>
> 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