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