You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Mark Struberg <st...@yahoo.de> on 2010/01/05 21:42:50 UTC
reincarnation of OPENJPA-256?
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
Re: reincarnation of OPENJPA-256?
Posted by Donald Woods <dw...@apache.org>.
Please open a new JIRA.
Is this related to your Jetty/Tomcat javaagent issues in OPENJPA-1454?
-Donald
Mark Struberg wrote:
> 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 <st...@yahoo.de> wrote:
>
>> From: Mark Struberg <st...@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
>>
>>
>>
>>
>
>
>
>
Re: reincarnation of OPENJPA-256?
Posted by Mark Struberg <st...@yahoo.de>.
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 <st...@yahoo.de> wrote:
> From: Mark Struberg <st...@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
>
>
>
>