[ https://issues.apache.org/jira/browse/OPENJPA-91?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Dick closed OPENJPA-91.
-------------------------------
Resolution: Fixed
Assignee: Michael Dick
Looks like this issue has been resolved.
The javax.persistence.Persistence class maintains a static cache of PersistenceProviderImpls, this static cache remains in memory for the life of the Application Server.
The problem occurs when OpenJPA is included in an Enterprise Application, the application runs (using classloader 1) and is restarted (classloader 1 is destroyed and a new classloader is created). The Persistence class may hold a reference to the OpenJPA classes which were loaded with classloader 1, when they are used with classloader 2 errors similar to the one reported by this issue occur.
As noted earlier one way to resolve the problem is to move the OpenJPA classes outside of the application - either to lib/ext, or to shared library. This prevents the OpenJPA classes from being loaded by the application classloader (instead it's loaded by the ext classloader which is not destroyed).
Whether this is the exact scenario that was reported by this issue is hard to say due to the age of the issue. Please re-open the issue if it can be reproduced with a more recent version of OpenJPA.
> java.lang.VerifyError on websphere after application reload
> -----------------------------------------------------------
>
> Key: OPENJPA-91
> URL: https://issues.apache.org/jira/browse/OPENJPA-91
> Project: OpenJPA
> Issue Type: Bug
> Environment: Using OpenJPA (openjpa-all-0.9.6-incubating.jar) in Rational Developer 7 ( Websphere 6.1 test environment ) connected to Oracle 9.2 database.
> OS: WinXP SP2
> Reporter: Anders Monrad
> Assignee: Michael Dick
> Priority: Minor
>
> Hi ..
> Not sure if this is a bug or just the way websphere reacts to openjpa.
> I have a small test program using OpenJPA against an Oracle database. I am running this program in the Websphere 6.1 test environment included with Rational Developer 7. This is all working just fine. But when I make changes to some ressource in the application, the chagnes are automatically published to the test environment and the app is restarted. After this I get the Exception below, whenever I try to access an EntityManager.
> If I restart the entire server, the app is running fine again. So I guess this is related to restarting the application.
> Caused by: java.lang.VerifyError: class loading constraint violated (class: org/apache/openjpa/kernel/BrokerImpl method: newQueryImpl(Ljava/lang/String;Lorg/apache/openjpa/kernel/StoreQuery;)Lorg/apache/openjpa/kernel/QueryImpl;) at pc: 0
> at java.lang.J9VMInternals.verifyImpl(Native Method)
> at java.lang.J9VMInternals.verify(J9VMInternals.java:59)
> at java.lang.J9VMInternals.initialize(J9VMInternals.java:120)
> at java.lang.Class.forNameImpl(Native Method)
> at java.lang.Class.forName(Class.java:131)
> at org.apache.openjpa.conf.OpenJPAConfigurationImpl.class$(OpenJPAConfigurationImpl.java:65)
> at org.apache.openjpa.conf.OpenJPAConfigurationImpl.(OpenJPAConfigurationImpl.java:182)
> at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.(JDBCConfigurationImpl.java:110)
> at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.(JDBCConfigurationImpl.java:100)
> at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.(JDBCConfigurationImpl.java:91)
> at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:55)
> 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.Bootstrap.invokeFactory(Bootstrap.java:117)
> at org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:57)
> at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:70)
> at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:78)
> at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
> at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
> at util.EntityManagerFactoryHelper.getEntityManagerFactory(EntityManagerFactoryHelper.java:22)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.