openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremy Bauer (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-1410) Class linkage exception when creating an EMF with OpenJPA M3
Date Thu, 18 Mar 2010 19:38:27 GMT

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

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

Experimentation and a quick search for similar issues is showing that use of the OpenJPA's
agent enhancer with Tomcat never worked?!? The agent gets tied to the base class loader and
enhances classes available to that loader at startup. Each app has their own lazily instantiated
class loader. Enhancement has already taken place by the time those loaders get instantiated.
This looked like a regression, but it it is actually a separate and much larger issue than
the one raised in this JIRA. I will not pursue that issue at this time.

Please verify that you no longer see the original problem/exception with latest 2.0 build.
If you were relying on runtime enhancement you will need to re-enable it by specifying:

<property name="openjpa.RuntimeUnenhancedClasses" value="supported"/>

A more recommended solution is to enhance your entities and build time.

> 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, 2.0.0-beta, 2.0.0-beta2
>         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.


Mime
View raw message