Author: jlmonteiro
Date: Tue May 13 07:20:53 2014
New Revision: 1594149
URL: http://svn.apache.org/r1594149
Log:
Caching MDB proxy
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
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/assembler/classic/Assembler.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1594149&r1=1594148&r2=1594149&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Tue May 13 07:20:53 2014
@@ -1066,7 +1066,7 @@ public class Assembler extends Assembler
}
// if local bean or mdb generate proxy class now to avoid
bottleneck on classloader later
- if (beanContext.isLocalbean() ||
beanContext.getComponentType().isMessageDriven()) {
+ if (beanContext.isLocalbean() &&
!beanContext.getComponentType().isMessageDriven()) {
final List<Class> interfaces = new ArrayList<Class>(3);
interfaces.add(Serializable.class);
interfaces.add(IntraVmProxy.class);
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=1594149&r1=1594148&r2=1594149&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
Tue May 13 07:20:53 2014
@@ -41,6 +41,7 @@ public class EndpointFactory implements
private final Class[] interfaces;
private final XAResourceWrapper xaResourceWrapper;
protected final List<ObjectName> jmxNames = new ArrayList<ObjectName>();
+ private final Class<?> proxy;
public EndpointFactory(final ActivationSpec activationSpec, final
MdbContainer container, final BeanContext beanContext, final MdbInstanceFactory
instanceFactory, final XAResourceWrapper xaResourceWrapper) {
this.activationSpec = activationSpec;
@@ -50,6 +51,14 @@ public class EndpointFactory implements
classLoader = container.getMessageListenerInterface().getClassLoader();
interfaces = new Class[]{container.getMessageListenerInterface(),
MessageEndpoint.class};
this.xaResourceWrapper = xaResourceWrapper;
+
+ final BeanContext.ProxyClass proxyClass =
beanContext.get(BeanContext.ProxyClass.class);
+ if (proxyClass == null) {
+ proxy =
LocalBeanProxyFactory.createProxy(beanContext.getBeanClass(),
beanContext.getClassLoader(), interfaces);
+ beanContext.set(BeanContext.ProxyClass.class, new
BeanContext.ProxyClass(proxy));
+ } else {
+ proxy = proxyClass.getProxy();
+ }
}
public ActivationSpec getActivationSpec() {
@@ -67,7 +76,7 @@ public class EndpointFactory implements
}
final EndpointHandler endpointHandler = new EndpointHandler(container,
beanContext, instanceFactory, xaResource);
try {
- return (MessageEndpoint)
LocalBeanProxyFactory.constructProxy(beanContext.get(BeanContext.ProxyClass.class).getProxy(),
endpointHandler);
+ return (MessageEndpoint)
LocalBeanProxyFactory.constructProxy(proxy, endpointHandler);
} catch (final InternalError e) { // should be useless
//try to create the proxy with tccl once again.
try {