Author: genspring
Date: Sat May 28 05:18:25 2011
New Revision: 1128555

URL: http://svn.apache.org/viewvc?rev=1128555&view=rev
Log:
1, Many legacy logic depends on the application exception 
"javax.rmi.NoSuchObjectException" if instance == null in 
SteatefuleContainer.obtainInstanc().  revert back to NoSuchObjectException.
2, add a workaround in futureAdapter.handleExcption to wrap the 
NoSuchObjectException with NoSuchEJBException().

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java?rev=1128555&r1=1128554&r2=1128555&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
 Sat May 28 05:18:25 2011
@@ -19,6 +19,7 @@ package org.apache.openejb.core.ivm;
 import java.io.ObjectStreamException;
 import java.lang.reflect.Method;
 import java.rmi.AccessException;
+import java.rmi.NoSuchObjectException;
 import java.rmi.RemoteException;
 import java.util.HashMap;
 import java.util.List;
@@ -38,6 +39,7 @@ import javax.ejb.EJBAccessException;
 import javax.ejb.EJBException;
 import javax.ejb.EJBLocalObject;
 import javax.ejb.EJBObject;
+import javax.ejb.NoSuchEJBException;
 
 import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
@@ -393,10 +395,20 @@ public abstract class EjbObjectProxyHand
             while (e.getCause() != null) {
                 e = (Throwable) e.getCause();
             }
+            
+            /* 
+             * StatefulContainer.obtainInstance(Object, ThreadContext, Method)
+             * will return NoSuchObjectException instead of NoSuchEJBException 
            * 
+             * when it can't obtain an instance.   Actually, the async client 
+             * is expecting a NoSuchEJBException.  Wrap it here as a 
workaround.
+             */
+            if (e instanceof NoSuchObjectException) {
+                e = new NoSuchEJBException(e.getMessage(), (Exception) e);
+            }
 
             boolean isExceptionUnchecked = (e instanceof Error) || (e 
instanceof RuntimeException);
 
-            // throw checked excpetion and ConcurrentAccessTimeoutException 
directly.
+            // throw checked excpetion and EJBException directly.
             if (!isExceptionUnchecked || e instanceof EJBException) {
                 throw new ExecutionException(e);
             }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?rev=1128555&r1=1128554&r2=1128555&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
 Sat May 28 05:18:25 2011
@@ -631,7 +631,7 @@ public class StatefulContainer implement
 
                 // Did we find the instance?
                 if (instance == null) {
-                    throw new InvalidateReferenceException(new 
NoSuchEJBException("Not Found"));
+                    throw new InvalidateReferenceException(new 
NoSuchObjectException("Not Found"));
                 }
 
                 


Reply via email to