You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by co...@apache.org on 2010/09/20 00:03:47 UTC

svn commit: r998740 - /openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java

Author: covener
Date: Sun Sep 19 22:03:46 2010
New Revision: 998740

URL: http://svn.apache.org/viewvc?rev=998740&view=rev
Log:
[OWB-455] avoid IllegalArgumentException when calling our scanned-up-front remove
methods from the impl class on the EJB proxy given out by the container.

Modified:
    openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java

Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java?rev=998740&r1=998739&r2=998740&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java Sun Sep 19 22:03:46 2010
@@ -158,14 +158,25 @@ public abstract class BaseEjbBean<T> ext
     
     protected void destroyStatefulSessionBeanInstance(T proxyInstance, Object ejbInstance)
     {
-        List<Method> methods = getRemoveMethods();
-        if (methods.size() > 0) 
+        Method removeMeth = null;
+        for (Method m : getRemoveMethods())
         {   
             // FIXME: This needs to call an API from the EJB
             // container to remove the EJB instance directly,
             // not via a remove method.  For now, just call 1 
             // remove method directly on the EJB
-            ClassUtil.callInstanceMethod(methods.get(0), ejbInstance, ClassUtil.OBJECT_EMPTY);
+            try 
+            { 
+                removeMeth = proxyInstance.getClass().getMethod(m.getName(), m.getParameterTypes());
+                ClassUtil.callInstanceMethod(removeMeth, proxyInstance, ClassUtil.OBJECT_EMPTY);
+            }
+            catch (NoSuchMethodException e) 
+            {
+                if (logger.wblWillLogDebug())
+                {
+                    logger.debug("Error calling remove method: ", e);
+                }
+            }
         }
     }
     /**