You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/07 10:59:23 UTC

svn commit: r1629829 - /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java

Author: rmannibucau
Date: Tue Oct  7 08:59:23 2014
New Revision: 1629829

URL: http://svn.apache.org/r1629829
Log:
TOMEE-1384 tolerate late serialization of session with ejb

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java?rev=1629829&r1=1629828&r2=1629829&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java Tue Oct  7 08:59:23 2014
@@ -233,7 +233,19 @@ public abstract class BaseEjbProxyHandle
 
     @Override
     public Object invoke(final Object proxy, Method method, Object[] args) throws Throwable {
-        isValidReference(method);
+        try {
+            isValidReference(method);
+        } catch (final IllegalStateException ise) {
+            // bean was undeployed
+            if (method.getName().equals("writeReplace")) { // session serialization, we just need to replace this
+                final BeanContext beanContext = beanContextRef.get();
+                final Object id = beanContext.getDeploymentID();
+                if (beanContext != null && id != null) {
+                    return _writeReplace(proxy);
+                }
+            }
+            throw ise;
+        }
 
         if (args == null) {
             args = new Object[]{};