You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Niklas Mehner (JIRA)" <ji...@apache.org> on 2009/10/13 09:55:31 UTC
[jira] Created: (OPENJPA-1346) ClassNotFoundException in
org.apache.openjpa.datacache.Caches.addTypesByName
ClassNotFoundException in org.apache.openjpa.datacache.Caches.addTypesByName
----------------------------------------------------------------------------
Key: OPENJPA-1346
URL: https://issues.apache.org/jira/browse/OPENJPA-1346
Project: OpenJPA
Issue Type: Question
Components: datacache
Affects Versions: 1.1.0
Environment: Windows / Oracle Weblogic 10.3.1 (JPA Version: <Starting OpenJPA 1.1.1-SNAPSHOT>)
Reporter: Niklas Mehner
This seems to be the same problem as OPENJPA-1093 (only openjpa, not kodo)
We are getting the following exception in our logfile:
5484 lvs-ejb3 WARN [[ACTIVE] ExecuteThread: '12' for queue: 'weblogic.kernel.Default (self-tuning)'] openjpa.Runtime - null
java.lang.ClassNotFoundException: de.evelopment.retail.lvs.ejb.stammdaten.BoxBean
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:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.openjpa.datacache.Caches.addTypesByName(Caches.java:48)
at org.apache.openjpa.datacache.AbstractQueryCache.afterCommit(AbstractQueryCache.java:198)
at org.apache.openjpa.event.RemoteCommitEventManager.fireEvent(RemoteCommitEventManager.java:132)
at org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager.fireEvent(AbstractConcurrentEventManager.java:115)
at org.apache.openjpa.event.AbstractRemoteCommitProvider.fireEvent(AbstractRemoteCommitProvider.java:63)
at org.apache.openjpa.event.SingleJVMRemoteCommitProvider.broadcast(SingleJVMRemoteCommitProvider.java:58)
at org.apache.openjpa.event.RemoteCommitEventManager.afterCommit(RemoteCommitEventManager.java:156)
at org.apache.openjpa.event.TransactionEventManager.fireEvent(TransactionEventManager.java:107)
at org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager.fireEvent(AbstractConcurrentEventManager.java:115)
at org.apache.openjpa.kernel.BrokerImpl.fireTransactionEvent(BrokerImpl.java:757)
at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2200)
at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1846)
at weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(ServerSCInfo.java:1038)
at weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(ServerSCInfo.java:1014)
at weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions(ServerTransactionImpl.java:2998)
at weblogic.transaction.internal.ServerTransactionImpl.afterCommittedStateHousekeeping(ServerTransactionImpl.java:2898)
at weblogic.transaction.internal.ServerTransactionImpl.setCommitted(ServerTransactionImpl.java:2943)
at weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(ServerTransactionImpl.java:2733)
at weblogic.transaction.internal.ServerTransactionImpl.globalCommit(ServerTransactionImpl.java:2653)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:285)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:233)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(BaseRemoteObject.java:621)
at weblogic.ejb.container.internal.StatelessRemoteObject.postInvoke1(StatelessRemoteObject.java:60)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvokeTxRetry(BaseRemoteObject.java:441)
where de.evelopment.retail.lvs.ejb.stammdaten.BoxBean is an entity bean.
I think the problem is that openjpa uses Class.forName(..) instead of Thread.currentThread().getContextClassLoader().loadClass(...) to load the class.
openJPA is loaded by the system classloader, while the class is from the ear-classloader, so Class.forName(..) cannot work.
the properties used in persistence.xml are:
<properties>
<property name="openjpa.DetachState" value="fetch-groups(DetachedStateField=true)"/>
<property name="openjpa.DataCache" value="true"/>
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
</properties>
Can we ignore this problem or can this cause real problems (I do not care all that much if caching is not working for this class, but I don't want any data corruption)?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.