Modified: 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java
 (original)
+++ 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java
 Thu May  6 16:45:02 2010
@@ -268,4 +268,25 @@ public class StatefulJndiEncTests extend
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
+
+    public void test24_lookupStatelessBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
+    public void test25_lookupStatefulBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatefulBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
 }

Modified: 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulSetterInjectionTests.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulSetterInjectionTests.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulSetterInjectionTests.java
 (original)
+++ 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulSetterInjectionTests.java
 Thu May  6 16:45:02 2010
@@ -268,4 +268,25 @@ public class StatefulSetterInjectionTest
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
+
+    public void test24_lookupStatefulBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatefulBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
+    public void test25_lookupStatelessBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
 }

Modified: 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessAnnotatedFieldInjectionTests.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessAnnotatedFieldInjectionTests.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessAnnotatedFieldInjectionTests.java
 (original)
+++ 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessAnnotatedFieldInjectionTests.java
 Thu May  6 16:45:02 2010
@@ -269,4 +269,25 @@ public class StatelessAnnotatedFieldInje
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
+
+    public void test24_lookupStatelessBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
+    public void test25_lookupStatefulBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
 }

Modified: 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessFieldInjectionTests.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessFieldInjectionTests.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessFieldInjectionTests.java
 (original)
+++ 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessFieldInjectionTests.java
 Thu May  6 16:45:02 2010
@@ -271,4 +271,24 @@ public class StatelessFieldInjectionTest
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
+
+    public void test24_lookupStatelessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
+    public void test25_lookupStatefulLocalBean() {
+        try{
+            ejbObject.lookupStatefulBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
 }

Modified: 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java
 (original)
+++ 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java
 Thu May  6 16:45:02 2010
@@ -279,4 +279,25 @@ public class StatelessJndiEncTests exten
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
+
+    public void test24_lookupStatelessBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
+    public void test25_lookupStatefulBusinessLocalBean() {
+        try{
+            ejbObject.lookupStatefulBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
 }

Modified: 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessSetterInjectionTests.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessSetterInjectionTests.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessSetterInjectionTests.java
 (original)
+++ 
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessSetterInjectionTests.java
 Thu May  6 16:45:02 2010
@@ -269,4 +269,24 @@ public class StatelessSetterInjectionTes
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
+
+    public void test24_lookupStatelessLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+
+    public void test25_lookupStatefulLocalBean() {
+        try{
+            ejbObject.lookupStatelessBusinessLocalBean();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
 }

Modified: 
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?rev=941800&r1=941799&r2=941800&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
 (original)
+++ 
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
 Thu May  6 16:45:02 2010
@@ -18,6 +18,7 @@ package org.apache.openejb.server.ejbd;
 
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -344,16 +345,22 @@ class JndiRequestHandler {
         try {
             handler = (BaseEjbProxyHandler) 
ProxyManager.getInvocationHandler(object);
         } catch (Exception e) {
-            // Not a proxy.  See if it's serializable and send it
-            if (object instanceof java.io.Serializable){
-                res.setResponseCode(ResponseCodes.JNDI_OK);
-                res.setResult(object);
-                return;
-            } else {
-                res.setResponseCode(ResponseCodes.JNDI_NAMING_EXCEPTION);
-                NamingException namingException = new 
NamingException("Expected an ejb proxy, found unknown object: type=" + 
object.getClass().getName() + ", toString=" + object);
-                res.setResult(new ThrowableArtifact(namingException));
-                return;
+            try {
+                Field field = 
object.getClass().getDeclaredField("invocationHandler");
+                field.setAccessible(true);
+                handler = (BaseEjbProxyHandler) field.get(object);
+            } catch (Exception e1) {
+                // Not a proxy.  See if it's serializable and send it
+                if (object instanceof java.io.Serializable){
+                    res.setResponseCode(ResponseCodes.JNDI_OK);
+                    res.setResult(object);
+                    return;
+                } else {
+                    res.setResponseCode(ResponseCodes.JNDI_NAMING_EXCEPTION);
+                    NamingException namingException = new 
NamingException("Expected an ejb proxy, found unknown object: type=" + 
object.getClass().getName() + ", toString=" + object);
+                    res.setResult(new ThrowableArtifact(namingException));
+                    return;
+                }
             }
         }
 
@@ -403,6 +410,12 @@ class JndiRequestHandler {
                 res.setResult(new ThrowableArtifact(namingException));
                 break;
             }
+            case LOCALBEAN: {
+                res.setResponseCode(ResponseCodes.JNDI_NAMING_EXCEPTION);
+                NamingException namingException = new NamingException("Not 
remotable: '" + name + "'. LocalBean classes are not remotable as per the EJB 
specification.");
+                res.setResult(new ThrowableArtifact(namingException));
+                break;
+            }
             default: {
                 res.setResponseCode(ResponseCodes.JNDI_NAMING_EXCEPTION);
                 NamingException namingException = new NamingException("Not 
remotable: '" + name + "'.");


Reply via email to