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