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*

Reply via email to