You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "YunFeng Ma (JIRA)" <ji...@apache.org> on 2007/08/06 09:11:59 UTC
[jira] Commented: (GERONIMO-3317) "has not been enhanced" error
when invoking an EJB 2.1 Entity Bean
[ https://issues.apache.org/jira/browse/GERONIMO-3317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12517841 ]
YunFeng Ma commented on GERONIMO-3317:
--------------------------------------
I retested my sample using latest geronimo and the "has not been enhanced" error had gone, but get a new error:
13:33:22,859 ERROR [OpenEJB] The bean instances business method encountered a sy
stem exception: org.apache.openejb.core.cmp.cmp2.Cmp2Entity
java.lang.NoClassDefFoundError: org.apache.openejb.core.cmp.cmp2.Cmp2Entity
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:223)
at java.lang.ClassLoader.defineClass(ClassLoader.java:162)
at serp.bytecode.BCClassLoader.findClass(BCClassLoader.java:73)
at java.lang.ClassLoader.loadClass(ClassLoader.java:602)
at java.lang.ClassLoader.loadClass(ClassLoader.java:568)
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:223)
at java.lang.ClassLoader.defineClass(ClassLoader.java:162)
at serp.bytecode.BCClassLoader.findClass(BCClassLoader.java:73)
at java.lang.ClassLoader.loadClass(ClassLoader.java:602)
at java.lang.ClassLoader.loadClass(ClassLoader.java:568)
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:160)
at org.apache.openjpa.util.GeneratedClasses.loadBCClass(GeneratedClasses.java:68)
at org.apache.openjpa.enhance.ManagedClassSubclasser.write(ManagedClassSubclasser.java:193)
at org.apache.openjpa.enhance.ManagedClassSubclasser.access$000(ManagedClassSubclasser.java:48)
at org.apache.openjpa.enhance.ManagedClassSubclasser$1.write(ManagedClassSubclasser.java:96)
at org.apache.openjpa.enhance.PCEnhancer.record(PCEnhancer.java:522)
at org.apache.openjpa.enhance.PCEnhancer.record(PCEnhancer.java:510)
at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:114)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:286)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:190)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:55)
at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createEntityManager(CMPEntityManagerTxScoped.java:74)
at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.getEntityManager(CMPEntityManagerTxScoped.java:55)
at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.getDelegate(CMPEntityManagerTxScoped.java:315)
at org.apache.openejb.core.cmp.jpa.JpaCmpEngine.registerListener(JpaCmpEngine.java:128)
at org.apache.openejb.core.cmp.jpa.JpaCmpEngine.getEntityManager(JpaCmpEngine.java:109)
at org.apache.openejb.core.cmp.jpa.JpaCmpEngine.loadBean(JpaCmpEngine.java:170)
at org.apache.openejb.core.cmp.CmpContainer.findByPrimaryKey(CmpContainer.java:687)
at org.apache.openejb.core.cmp.CmpContainer.invoke(CmpContainer.java:284)
at org.apache.openejb.core.entity.EntityEjbHomeHandler.findX(EntityEjbHomeHandler.java:57)
at org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:160)
at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:229)
at org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
at $Proxy35.findByPrimaryKey(Unknown Source)
at javaUtility.EjbUtility.getUser(EjbUtility.java:105)
at servlets.WelcomeServlet.doPost(WelcomeServlet.java:71)
at servlets.GVTServlet.service(GVTServlet.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:351)
at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:803)
The roor cause is the following codes in OpenJPA:
{code}
package org.apache.openjpa.util;
public class GeneratedClasses {
/**
* Return the more derived loader of the class laoders for the given
* classes.
*/
public static ClassLoader getMostDerivedLoader(Class c1, Class c2) {
ClassLoader l1 = (ClassLoader) AccessController.doPrivileged(
J2DoPrivHelper.getClassLoaderAction(c1));
ClassLoader l2 = (ClassLoader) AccessController.doPrivileged(
J2DoPrivHelper.getClassLoaderAction(c2));
if (l1 == l2)
return l1;
if (l1 == null)
return l2;
if (l2 == null)
return l1;
for (ClassLoader p = (ClassLoader) AccessController.doPrivileged(
J2DoPrivHelper.getParentAction(l1)); p != null;
p = (ClassLoader) AccessController.doPrivileged(
J2DoPrivHelper.getParentAction(p)))
if (p == l2)
return l1;
return l2;
}
{code}
The classloader of c1 is [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=SVT/GVTLibrary/2.0/car].
The classloader of c2 is [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=org.apache.geronimo.configs/openjpa/2.0-SNAPSHOT/car].
The expected returned classloader is the classloader of c1, but classloader [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=org.apache.geronimo.configs/openjpa/2.0-SNAPSHOT/car] is not the parent of classloader [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=SVT/GVTLibrary/2.0/car], it's just in the field "parents" arraylist of classloader [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=SVT/GVTLibrary/2.0/car] which is customized by org.apache.geronimo.kernel.classloader.JarFileClassLoader. So this method always returns the classloader of c2.
> "has not been enhanced" error when invoking an EJB 2.1 Entity Bean
> ------------------------------------------------------------------
>
> Key: GERONIMO-3317
> URL: https://issues.apache.org/jira/browse/GERONIMO-3317
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: OpenEJB
> Affects Versions: 2.0-M7
> Reporter: Song
> Assignee: Kevan Miller
> Priority: Critical
> Fix For: 2.1
>
> Attachments: GERONIMO-3317.patch, gvtlibTable.ddl
>
>
> My application could be deployed successfully.
> But when launching an Entity Bean, "has not been enhanced" error is thrown:
> 17:07:58,593 ERROR [OpenEJB] The bean instances business method encountered a system exception: The type "class openejb.gvtlibrary.EJBUser" has not been enhanced.
> <1.0.0-SNAPSHOT-SNAPSHOT fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class openejb.gvtlibrary.EJBUser" has not been enhanced.
> at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1610)
> at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1584)
> at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:663)
> at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:563)
> at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:488)
> at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:290)
> at org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1089)
> at org.apache.openjpa.kernel.DelegatingBroker.newObjectId(DelegatingBroker.java:257)
> at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:348)
> at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.find(CMPEntityManagerTxScoped.java:125)
> at org.apache.openejb.core.cmp.jpa.JpaCmpEngine.loadBean(JpaCmpEngine.java:171)
> at org.apache.openejb.core.cmp.CmpContainer.findByPrimaryKey(CmpContainer.java:687)
> at org.apache.openejb.core.cmp.CmpContainer.invoke(CmpContainer.java:284)
> at org.apache.openejb.core.entity.EntityEjbHomeHandler.findX(EntityEjbHomeHandler.java:57)
> at org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:160)
> at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:230)
> at org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
> at $Proxy51.findByPrimaryKey(Unknown Source)
> at javaUtility.EjbUtility.getUser(EjbUtility.java:105)
> at servlets.WelcomeServlet.doPost(WelcomeServlet.java:71)
> at servlets.GVTServlet.service(GVTServlet.java:89)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
> at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:351)
> at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:801)
> org.apache.openejb.InvalidateReferenceException: java.rmi.RemoteException: The bean encountered a non-application exception.; nested exception is:
> <1.0.0-SNAPSHOT-SNAPSHOT fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class openejb.gvtlibrary.EJBUser" has not been enhanced.: The bean encountered a non-application exception.; nested exception is:
> <1.0.0-SNAPSHOT-SNAPSHOT fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class openejb.gvtlibrary.EJBUser" has not been enhanced.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.