[
https://issues.apache.org/jira/browse/OPENJPA-384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539213
]
Simon Droscher commented on OPENJPA-384:
----------------------------------------
The problem is defintely classloader related. None of the filtering class
loader option are helpful in this case - it seems to be impossible to get
WebLogic 10 to actually use OpenJPA 1.0.0
This is because when weblogic starts, before it loads any applications etc, it
uses its version of OpenJPA for the loading of persistence security data. Any
classloaders for applications will (due to classloader inheritance) use this
already loaded instance of OpenJPA. Doing any of the WebLogic changes to the
classloader heirarchy (eg prefer-web-inf-classes, prefer-application-packages
or even defining a custom classloader heirarchy with classloader-structure)
doesn't work as these will only force the classloader to load the local version
in preference to an ancestor if the class is not already loaded! So this would
only work if WebLogic wasn't actively using OpenJPA at startup.
It seems to me the only workaround for this issue (which I guess is more a
WebLogic issue rather than OpenJPA issue) is to take a copy of the OpenJPA
1.0.0 source and rename all the packages and rebuild, and use this renamed
openjpa jar file in my application. Thus the classes used by my application are
totally different to the ones loaded by WebLogic on startup and all runs nicely.
Personally I don't like having to use this workaround :)
> ClassCastException when trying to load OpenJPA 1.0.0 based webapp in WebLogic
> 10
> --------------------------------------------------------------------------------
>
> Key: OPENJPA-384
> URL: https://issues.apache.org/jira/browse/OPENJPA-384
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 1.0.0
> Environment: WebLogic 10
> Reporter: Simon Droscher
>
> I am trying to deploy a web application which uses OpenJPA 1.0.0 into a
> WebLogic 10 environment. The application deployment (and subsequent startup)
> fails with the following error:
> {code}java.lang.ClassCastException: weblogic.kodo.WebLogicLogFactory
> at
> org.apache.openjpa.lib.conf.ConfigurationImpl.getLogFactory(ConfigurationImpl.java:207)
> at
> org.apache.openjpa.lib.conf.ConfigurationImpl.getLog(ConfigurationImpl.java:225)
> at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getConfigurationLog(OpenJPAConfigurationImpl.java:1471)
> at
> org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:425)
> at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:59)
> 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:585)
> at org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:124)
> at
> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:62)
> at
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:119)
> at
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:52)
> at
> weblogic.deployment.PersistenceUnitInfoImpl.createEntityManagerFactory(PersistenceUnitInfoImpl.java:264)
> at
> weblogic.deployment.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:110)
> {code}
> There doesn't seem to be any details or documentation on running apps based
> on newer versions of OpenJPA under WebLogic 10 (which packages OpenJPA 0.9.7
> as part of Kodo).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.