[ 
https://issues.apache.org/jira/browse/OPENJPA-1410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12843590#action_12843590
 ] 

Jeremy Bauer commented on OPENJPA-1410:
---------------------------------------

Thanks, Donald.  ..nothing there that should cause breakage.  Another concern 
is that Catalina includes lib/annotations-api.jar.  That jar contains a few 
javax.persistence classes:

javax/persistence/PersistenceContext.class
javax/persistence/PersistenceContextType.class
javax/persistence/PersistenceContexts.class
javax/persistence/PersistenceProperty.class
javax/persistence/PersistenceUnit.class
javax/persistence/PersistenceUnits.class

Depending on the classloader configuration, adding the JPA 2.0 spec API to the 
application may foul up the environment.  I'm guessing not though, since the 
server should break even when a complete JPA 1.0 API is added to the classpath. 
 TBD...

> Class linkage exception when creating an EMF with OpenJPA M3
> ------------------------------------------------------------
>
>                 Key: OPENJPA-1410
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1410
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: validation
>    Affects Versions: 2.0.0-M3
>         Environment: Tomcat and Glassfish, OpenJPA M3
>            Reporter: Jeremy Bauer
>            Assignee: Jeremy Bauer
>            Priority: Critical
>             Fix For: 2.0.0
>
>
> Posted by Seth Jackson on the user forum[1].
> It appears something was modified in OpenJPA 2.0 M3 from M2 that causes a
> LinkageError.
> In my current environment, I've tested both Glassfish and Tomcat using M2
> and M3. M2 runs without problems, but M3 throws a linkage error as follows:
> Caused by: java.lang.LinkageError: loader constraint violation: loader
> (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading
> for a different type with name
> "org/apache/openjpa/conf/OpenJPAConfiguration"
>        at java.lang.ClassLoader.defineClass1(Native Method)
>        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
>        at 
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>        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
> org.apache.openjpa.persistence.validation.ValidationUtils.setupValidation(ValidationUtils.java:53)
>        at
> org.apache.openjpa.persistence.PersistenceProviderImpl.loadValidator(PersistenceProviderImpl.java:290)
>        at
> org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:97)
>        at
> org.apache.openjpa.persistence.OpenJPAPersistence.createEntityManagerFactory(OpenJPAPersistence.java:128)
>        at
> org.apache.openjpa.persistence.OpenJPAPersistence.createEntityManagerFactory(OpenJPAPersistence.java:111)
>        at test_test.user.UserAction.execute(UserAction.java:39)
> I've already confirmed that the OpenJPA classes in question do NOT exist in
> any other JARs in the path.
> ValidationUtils.setupValidation(ValidationUtils.java:53) calls the
> OpenJPAConfiguration.getConfigurationLog(). The object being referenced is
> JDBCConfigurationImpl, which in other classes retrieves the log reference
> perfectly fine, before it gets to the offending line.
> Seth's follow up[2]:
> After further review, using Glassfish 2.1.1 I received this error message in
> the server log:
> Caused by: java.lang.LinkageError: loader constraint violation: when
> resolving method
> "org.apache.openjpa.persistence.validation.ValidationUtils.setupValidation(Lorg/apache/openjpa/conf/OpenJPAConfiguration;)Z"
> the class loader (instance of org/apache/catalina/loader/WebappClassLoader)
> of the current class,
> org/apache/openjpa/persistence/PersistenceProviderImpl, and the class loader
> (instance of sun/misc/Launcher$AppClassLoader) for resolved class,
> org/apache/openjpa/persistence/validation/ValidationUtils, have different
> Class objects for the type org/apache/openjpa/conf/OpenJPAConfiguration used
> in the signature
> So it appears to be the WebappClassLoader and the AppClassLoader are both
> loading the OpenJPAConfiguration from the same JAR file, causing the error
> when the class is trying to be resolved in this particular method.
> [1] 
> http://n2.nabble.com/Struts-2x-OpenJPA-2-0-M3-Tomcat-or-Glassfish-tp4087312p4087312.html
> [2] 
> http://n2.nabble.com/Struts-2x-OpenJPA-2-0-M3-Tomcat-or-Glassfish-tp4087312p4093228.html

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to