I did a quick hack for now. I don't think it's perfect, but imho better than to add another catch and retry ...
As I said: this works for me, but I have no clue if it is ok. Should I open a new JIRA or reopen the 256? txs, strub Index: openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java =================================================================== --- openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java (Revision 896212) +++ openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java (Arbeitskopie) @@ -19,6 +19,7 @@ package org.apache.openjpa.lib.conf; import java.security.AccessController; +import java.security.PrivilegedActionException; import org.apache.commons.lang.ObjectUtils; import org.apache.openjpa.lib.util.J2DoPrivHelper; @@ -115,6 +116,21 @@ if (cl == null) { cl = AccessController.doPrivileged( J2DoPrivHelper.getClassLoaderAction(type)); + if (cl == null) { + ClassLoader ctxLoader = AccessController.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction()); + // TODO if ctxLoader == null use the normal cl + + try { + @SuppressWarnings("unchecked") + Class clsClazz = AccessController.doPrivileged( + J2DoPrivHelper.getForNameAction(clsName, true, ctxLoader)); + cl = AccessController.doPrivileged( + J2DoPrivHelper.getClassLoaderAction(clsClazz)); + } + catch (PrivilegedActionException pae) { + // we basically do nothing + cl = null; + } + } if (cl == null) { // System classloader is returned as null cl = AccessController.doPrivileged( J2DoPrivHelper.getSystemClassLoaderAction()); --- On Tue, 1/5/10, Mark Struberg <strub...@yahoo.de> wrote: > From: Mark Struberg <strub...@yahoo.de> > Subject: reincarnation of OPENJPA-256? > To: dev@openjpa.apache.org > Date: Tuesday, January 5, 2010, 9:42 PM > Hi! > > I fear I got hit by OPENJPA-256 [1]. > > I'm still not sure why, but in ObjectValue#newInstance for > clsName=org.apache.openjpa.util.CacheMap and type=interface > java.util.Map the SystemClassLoader is being used and I get > a java.lang.reflect.InvocationTargetException so the > workaround mentioned in the old Jira simply does not work. > > I'm using OpenJPA compiled myself from Revision 896212 > under jdk-1.6.0_17-b04 x86_64 and running under jetty-6.1.22 > > > ... > Caused by: java.lang.NoClassDefFoundError: > org/apache/openjpa/lib/util/SizedMap > at > java.lang.Class.getDeclaredConstructors0(Native Method) > at > java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) > at > java.lang.Class.getConstructor0(Class.java:2699) > at > java.lang.Class.newInstance0(Class.java:326) > at > java.lang.Class.newInstance(Class.java:308) > at > org.apache.openjpa.lib.util.J2DoPrivHelper$11.run(J2DoPrivHelper.java:368) > at > java.security.AccessController.doPrivileged(Native Method) > at > org.apache.openjpa.lib.conf.Configurations.newInstance(Configurations.java:223) > at > org.apache.openjpa.lib.conf.ObjectValue.newInstance(ObjectValue.java:124) > at > org.apache.openjpa.conf.QueryCompilationCacheValue.newInstance(QueryCompilationCacheValue.java:60) > at > org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103) > at > org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83) > at > org.apache.openjpa.conf.OpenJPAConfigurationImpl.getQueryCompilationCacheInstance(OpenJPAConfigurationImpl.java:1522) > at > org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:634) > at > org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:617) > at > org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:679) > at > org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:586) > at > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:971) > at > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:957) > at > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:953) > ... 90 more > Caused by: java.lang.ClassNotFoundException: > org.apache.openjpa.lib.util.SizedMap > at > java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at > java.security.AccessController.doPrivileged(Native Method) > at > java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at > java.lang.ClassLoader.loadClass(ClassLoader.java:303) > at > sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > at > java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at > java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316) > > > txs and LieGrue, > strub > > > [1] http://issues.apache.org/jira/browse/OPENJPA-256 > > > >