You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/12/05 00:09:35 UTC

svn commit: r1210272 - in /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb: cdi/ThreadSingletonServiceImpl.java util/classloader/MultipleClassLoader.java

Author: rmannibucau
Date: Sun Dec  4 23:09:34 2011
New Revision: 1210272

URL: http://svn.apache.org/viewvc?rev=1210272&view=rev
Log:
if there is only one classloader (ie we are not in OSGi) simply use the current classloader to get OWB services

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1210272&r1=1210271&r2=1210272&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java Sun Dec  4 23:09:34 2011
@@ -89,7 +89,13 @@ public class ThreadSingletonServiceImpl 
         optional(services, ConversationService.class, "org.apache.webbeans.jsf.DefaultConversationService");
 
         ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
-        Thread.currentThread().setContextClassLoader(new MultipleClassLoader(oldClassLoader, ThreadSingletonServiceImpl.class.getClassLoader()));
+        ClassLoader cl;
+        if (oldClassLoader != ThreadSingletonServiceImpl.class.getClassLoader()) {
+            cl = new MultipleClassLoader(oldClassLoader, ThreadSingletonServiceImpl.class.getClassLoader());
+        } else {
+            cl = oldClassLoader;
+        }
+        Thread.currentThread().setContextClassLoader(cl);
         WebBeansContext webBeansContext;
         Object old = null;
         try {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java?rev=1210272&r1=1210271&r2=1210272&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java Sun Dec  4 23:09:34 2011
@@ -27,6 +27,11 @@ public class MultipleClassLoader extends
                 return loadClassSecond(name);
             }
             throw ncdfe;
+        } catch (LinkageError le) {
+            if (second != getParent()) {
+                return loadClassSecond(name);
+            }
+            throw le;
         }
     }