Harold - Please take a read through the spring doc[1] to see if they address your problem.
[1] http://static.springsource.org/spring/docs/2.0.x/reference/orm.html#orm-jpa-setup-lcemfb On Wed, Jul 6, 2011 at 8:25 AM, Harald Wellmann <harald.wellm...@gmx.de>wrote: > I'm trying to use OpenJPA 2.1.0 with Spring 3.0.5 and Tomcat 6.0.32 and a > JPA 2.0 persistence unit configured by annotations. > > At first, the enhancer did not recognize any of my classes, which looks > like the same problem as described in > https://issues.apache.org/jira/browse/OPENJPA-1891. > > Then I moved the Geronimo JPA JAR from my WAR to Tomcat's lib folder as > described in this issue (but this feels wrong somehow). > > After that, the enhancer starts to do some work but then fails with an > exception which I don't really understand. > > It may be related to an inheritance chain in my entity model > > A -> B -> C > > where A is an Entity and B and C are MappedSuperclasses. > > Some trace output > > 8796 foo TRACE [main] openjpa.Enhance - Enhancing type "class com.A" > loaded by WebappClassLoader > context: /foo-web > delegate: false > repositories: > /WEB-INF/classes/ > ----------> Parent Classloader: > org.apache.catalina.loader.StandardClassLoader@a210b5b > . > 8808 foo TRACE [main] openjpa.Enhance - Enhancement for "com/A" > completed. Class size: [669/3.516] > 8809 foo TRACE [main] openjpa.Enhance - "com/B" requires runtime > enhancement: true > 209144 foo TRACE [main] openjpa.Enhance - Enhancing type "class com/B" > loaded by WebappClassLoader > context: /foo-web > delegate: false > repositories: > /WEB-INF/classes/ > ----------> Parent Classloader: > org.apache.catalina.loader.StandardClassLoader@a210b5b > . > 209170 foo TRACE [main] openjpa.Enhance - Enhancement for "com/B" > completed. Class size: [1.204/5.336] > 209008 foo WARN [main] openjpa.MetaData - The class "com.A" listed in > the openjpa.MetaDataFactory configuration property could not be loaded by > org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader > WebappClassLoader > context: /foo-web > delegate: false > repositories: > /WEB-INF/classes/ > ----------> Parent Classloader: > org.apache.catalina.loader.StandardClassLoader@a210b5b > ; ignoring. > 209008 foo TRACE [main] openjpa.MetaData - java.lang.NoSuchMethodError: > com.C.pcGetManagedFieldCount()I > java.lang.NoSuchMethodError: com.C.pcGetManagedFieldCount()I > at com.B.<clinit>(B.java) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:247) > at > org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1552) > at > org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypesInternal(MetaDataRepository.java:1528) > at > org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1506) > at > org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:283) > at > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:239) > at > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:213) > at > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156) > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227) > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154) > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:423) > at > org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:485) > at $Proxy12.createEntityManager(Unknown Source) > > The missing method appears to be one added by the enhancer, but com.C has > not been enhanced yet. > > I was able to deploy the same unenhanced persistence unit on Glassfish > without problems, so there must be a problem on the interface between > OpenJPA, Spring and Tomcat. > > Any ideas anyone...? > > Thanks, > Harald > > - *Rick Curtis*