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 + "'.");
