You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Kevin Sutter <kw...@gmail.com> on 2009/01/30 15:51:24 UTC
Re: svn commit: r739054 - /openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
Hi Abe,
Along these lines, have you looked at OPENJPA-767 (
https://issues.apache.org/jira/browse/OPENJPA-767)? I had created a sandbox
for this experimentation some time back. I had come across this one issue
with using the proper classloader when loading our OpenJPA runtime in an
OSGi environment. Have you hit a similar situation with your Spring
integration? And, what other type of changes have you put in to support
Spring? Thanks!
Kevin
On Thu, Jan 29, 2009 at 4:27 PM, <aw...@apache.org> wrote:
> Author: awhite
> Date: Thu Jan 29 22:27:00 2009
> New Revision: 739054
>
> URL: http://svn.apache.org/viewvc?rev=739054&view=rev
> Log:
> Use both envLoader and application loader for class loading when parsing
> XML metadata files. envLoader first to appease Spring integ.
>
>
> Modified:
>
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
>
> Modified:
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java?rev=739054&r1=739053&r2=739054&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> (original)
> +++
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> Thu Jan 29 22:27:00 2009
> @@ -48,6 +48,7 @@
> import org.apache.openjpa.lib.meta.MetaDataParser;
> import org.apache.openjpa.lib.util.J2DoPrivHelper;
> import org.apache.openjpa.lib.util.Localizer;
> +import org.apache.openjpa.lib.util.MultiClassLoader;
> import org.apache.openjpa.lib.util.Options;
> import org.apache.openjpa.meta.AbstractCFMetaDataFactory;
> import org.apache.openjpa.meta.ClassMetaData;
> @@ -237,10 +238,24 @@
> * Parse the given XML resource.
> */
> private void parseXML(URL xml, Class cls, int mode, ClassLoader
> envLoader) {
> + // spring needs to use the envLoader first for all class
> resolution,
> + // but we must still fall back on application loader
> ClassLoader loader = repos.getConfiguration().
> - getClassResolverInstance().getClassLoader(cls, envLoader);
> + getClassResolverInstance().getClassLoader(cls, null);
> + if (envLoader != null && envLoader != loader) {
> + MultiClassLoader mult = new MultiClassLoader();
> + mult.addClassLoader(envLoader);
> +
> + // loader from resolver is usually a multi loader itself
> + if (loader instanceof MultiClassLoader)
> + mult.addClassLoaders((MultiClassLoader)loader);
> + else
> + mult.addClassLoader(loader);
> + loader = mult;
> + }
> +
> XMLPersistenceMetaDataParser xmlParser = getXMLParser();
> - xmlParser.setClassLoader(envLoader != null ? envLoader : loader);
> + xmlParser.setClassLoader(loader);
> xmlParser.setEnvClassLoader(envLoader);
> xmlParser.setMode(mode);
> try {
>
>
>