Author: rmannibucau
Date: Sat Mar 16 17:08:24 2013
New Revision: 1457275

URL: http://svn.apache.org/r1457275
Log:
TOMEE-832 mdb should use beancontext classloader, trying tccl as fallback, 
classloader is kept as compatibility mode but not sure it could have work 
otherwise that in standalone

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java?rev=1457275&r1=1457274&r2=1457275&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
 Sat Mar 16 17:08:24 2013
@@ -67,18 +67,19 @@ public class EndpointFactory implements 
         }
         final EndpointHandler endpointHandler = new EndpointHandler(container, 
beanContext, instanceFactory, xaResource);
         try {
-            return (MessageEndpoint) 
LocalBeanProxyFactory.newProxyInstance(classLoader, endpointHandler, 
beanContext.getBeanClass(), interfaces);
-        } catch (InternalError e) {
+            return (MessageEndpoint) 
LocalBeanProxyFactory.newProxyInstance(beanContext.getClassLoader(), 
endpointHandler, beanContext.getBeanClass(), interfaces);
+        } catch (final InternalError e) {
             //try to create the proxy with tccl once again.
-            ClassLoader tccl = Thread.currentThread().getContextClassLoader();
-            if (tccl == classLoader) {
-                tccl = beanContext.getClassLoader();
-            }
-            if (tccl != null) {
-                return (MessageEndpoint) 
LocalBeanProxyFactory.newProxyInstance(tccl, endpointHandler, 
beanContext.getBeanClass(), interfaces);
-            } else {
-                throw e;
+            try {
+                return 
MessageEndpoint.class.cast(LocalBeanProxyFactory.newProxyInstance(Thread.currentThread().getContextClassLoader(),
 endpointHandler, beanContext.getBeanClass(), interfaces));
+            } catch (final InternalError ie) {
+                try {
+                    return 
MessageEndpoint.class.cast(LocalBeanProxyFactory.newProxyInstance(classLoader, 
endpointHandler, beanContext.getBeanClass(), interfaces));
+                } catch (final InternalError ie2) {
+                    // no-op
+                }
             }
+            throw e;
         }
     }
 


Reply via email to