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;
         }
     }
 


Reply via email to