Author: rmannibucau
Date: Thu Oct 20 18:14:59 2011
New Revision: 1186969
URL: http://svn.apache.org/viewvc?rev=1186969&view=rev
Log:
OPENEJB-1704 using ejbRemoe instead of creat method in stateless freeinstance
method
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?rev=1186969&r1=1186968&r2=1186969&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
Thu Oct 20 18:14:59 2011
@@ -16,31 +16,6 @@
*/
package org.apache.openejb.core.stateless;
-import java.io.Flushable;
-import java.io.IOException;
-import java.lang.management.ManagementFactory;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import javax.ejb.ConcurrentAccessTimeoutException;
-import javax.ejb.EJBContext;
-import javax.ejb.SessionBean;
-import javax.ejb.SessionContext;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.NamingException;
-
import org.apache.openejb.ApplicationException;
import org.apache.openejb.BeanContext;
import org.apache.openejb.OpenEJBException;
@@ -65,8 +40,42 @@ import org.apache.openejb.util.SafeToolk
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
+import javax.ejb.ConcurrentAccessTimeoutException;
+import javax.ejb.EJBContext;
+import javax.ejb.SessionBean;
+import javax.ejb.SessionContext;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import java.io.Flushable;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
public class StatelessInstanceManager {
private static final Logger logger =
Logger.getInstance(LogCategory.OPENEJB, "org.apache.openejb.util.resources");
+ private static final Method removeSessionBeanMethod;
+ static { // initialize it only once
+ Method foundRemoveMethod;
+ try {
+ foundRemoveMethod =
SessionBean.class.getDeclaredMethod("ejbRemove");
+ } catch (NoSuchMethodException e) {
+ foundRemoveMethod = null;
+ }
+ removeSessionBeanMethod = foundRemoveMethod;
+ }
protected Duration accessTimeout;
protected Duration closeTimeout;
@@ -255,7 +264,7 @@ public class StatelessInstanceManager {
callContext.setCurrentOperation(Operation.PRE_DESTROY);
BeanContext beanContext = callContext.getBeanContext();
- Method remove = instance.bean instanceof SessionBean?
beanContext.getCreateMethod(): null;
+ Method remove = instance.bean instanceof SessionBean?
removeSessionBeanMethod : null;
List<InterceptorData> callbackInterceptors =
beanContext.getCallbackInterceptors();
InterceptorStack interceptorStack = new
InterceptorStack(instance.bean, remove, Operation.PRE_DESTROY,
callbackInterceptors, instance.interceptors);