[jboss-cvs] JBossAS SVN: r73827 - in projects/ejb3/trunk/proxy/src: main/java/org/jboss/ejb3/proxy/factory and 19 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri May 30 02:27:36 EDT 2008


Author: ALRubinger
Date: 2008-05-30 02:27:36 -0400 (Fri, 30 May 2008)
New Revision: 73827

Added:
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandlerMetadata.java
Removed:
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/remoting/RemotingTargetIds.java
Modified:
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/InvokableContext.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/StatefulSessionInvokableContext.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactoryBase.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/SessionProxyFactoryBase.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionLocalProxyFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionProxyFactoryBase.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionRemoteProxyFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionLocalProxyFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionProxyFactoryBase.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionRemoteProxyFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandler.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/SessionProxyInvocationHandlerBase.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateful/StatefulProxyInvocationHandler.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateless/StatelessProxyInvocationHandler.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiSessionRegistrarBase.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatefulSessionRegistrar.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatelessSessionRegistrar.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateful/StatefulSessionProxyObjectFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateless/StatelessSessionProxyObjectFactory.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/container/SessionContainer.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxySessionTestCaseBase.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxyStatefulSessionTestCase.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SfsbProxyEqualityTestCase.java
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SlsbProxyEqualityTestCase.java
   projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml
Log:
[EJBTHREE-1345] Functional Remoting Implementation for SLSB and SFSB, removed Reflection for calls to the Container

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/InvokableContext.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/InvokableContext.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/InvokableContext.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -37,14 +37,6 @@
 public interface InvokableContext<T extends ContainerMethodInvocation>
 {
    /**
-    * The name of the "invoke" method for use in reflection
-    */
-   String METHOD_NAME_INVOKE = "invoke";
-   
-   String[] METHOD_SIGNATURE_INVOKE = new String[]
-   {Object.class.getName(), SerializableMethod.class.getName(), Object[].class.getName()};
-   
-   /**
     * Invokes the method described by the specified serializable method
     * as called from the specified proxy, using the specified arguments
     * 

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/StatefulSessionInvokableContext.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/StatefulSessionInvokableContext.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/container/StatefulSessionInvokableContext.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -37,16 +37,7 @@
       extends
          InvokableContext<StatefulSessionContainerMethodInvocation>
 {
-
    /**
-    * The name of the "createSession" method for use in reflection
-    */
-   String METHOD_NAME_CREATESESSION = "createSession";
-
-   String[] METHOD_SIGNATURE_CREATESESSION = new String[]
-   {};
-
-   /**
     * Creates a new user session and returns the unique Session ID
     * 
     * @return

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -21,8 +21,6 @@
  */
 package org.jboss.ejb3.proxy.factory;
 
-import java.io.Serializable;
-
 /**
  * ProxyFactory
  * 
@@ -33,9 +31,20 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
-public interface ProxyFactory extends Serializable
+public interface ProxyFactory
 {
    // --------------------------------------------------------------------------------||
+   // Fnuctional Methods -------------------------------------------------------------||
+   // --------------------------------------------------------------------------------||
+
+   /**
+    * Returns the unique name of this ProxyFactory
+    * 
+    * @return
+    */
+   String getName();
+
+   // --------------------------------------------------------------------------------||
    // Lifecycle Methods --------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactoryBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactoryBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/ProxyFactoryBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -50,6 +50,11 @@
    // Instance Members ---------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 
+   /**
+    * The Unique name for this Proxy Factory
+    */
+   private String name;
+
    private ClassLoader classloader;
 
    // --------------------------------------------------------------------------------||
@@ -59,12 +64,14 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param classloader The ClassLoader associated with the EJBContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public ProxyFactoryBase(final ClassLoader classloader)
+   public ProxyFactoryBase(final String name, final ClassLoader classloader)
    {
       // Set properties
+      this.setName(name);
       this.setClassLoader(classloader);
    }
 
@@ -148,8 +155,6 @@
    {
       // Log
       log.debug("Started: " + this);
-
-      //TODO
    }
 
    /**
@@ -181,4 +186,14 @@
       this.classloader = classloader;
    }
 
+   public String getName()
+   {
+      return name;
+   }
+
+   protected void setName(final String name)
+   {
+      this.name = name;
+   }
+
 }

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/SessionProxyFactoryBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/SessionProxyFactoryBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/SessionProxyFactoryBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -95,14 +95,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this Session Bean
     * @param classloader The ClassLoader associated with the SessionContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public SessionProxyFactoryBase(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public SessionProxyFactoryBase(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(classloader);
+      super(name, classloader);
 
       // Set Metadata
       this.setMetadata(metadata);
@@ -122,9 +124,6 @@
     */
    public Object createProxyHome()
    {
-      // Initialize an error message; why not be pessimistic? ;)
-      String errorMessage = "Could not create Home Proxy for " + this.getMetadata().getEjbName();
-
       try
       {
          // Create a new Proxy instance, and return
@@ -135,7 +134,7 @@
       catch (Throwable t)
       {
          // Throw a descriptive error message along with the originating Throwable 
-         throw new RuntimeException(errorMessage, t);
+         throw new RuntimeException("Could not create Home Proxy for " + this.getMetadata().getEjbName(), t);
       }
    }
 

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionLocalProxyFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionLocalProxyFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionLocalProxyFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -40,8 +40,6 @@
    // Class Members ------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 
-   private static final long serialVersionUID = 1L;
-
    // --------------------------------------------------------------------------------||
    // Constructor --------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -49,14 +47,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this SLSB
     * @param classloader The ClassLoader associated with the StatelessContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public StatefulSessionLocalProxyFactory(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public StatefulSessionLocalProxyFactory(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(metadata, classloader);
+      super(name, metadata, classloader);
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionProxyFactoryBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionProxyFactoryBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionProxyFactoryBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -47,14 +47,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this SFSB
     * @param classloader The ClassLoader associated with the StatelessContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public StatefulSessionProxyFactoryBase(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public StatefulSessionProxyFactoryBase(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(metadata, classloader);
+      super(name, metadata, classloader);
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionRemoteProxyFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionRemoteProxyFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionRemoteProxyFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -40,8 +40,6 @@
    // --------------------------------------------------------------------------------||
    // Class Members ------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
-   
-   private static final long serialVersionUID = 1L;
 
    private static final Logger logger = Logger.getLogger(StatefulSessionRemoteProxyFactory.class);
 
@@ -54,14 +52,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this SFSB
     * @param classloader The ClassLoader associated with the StatelessContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public StatefulSessionRemoteProxyFactory(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public StatefulSessionRemoteProxyFactory(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(metadata, classloader);
+      super(name, metadata, classloader);
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionLocalProxyFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionLocalProxyFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionLocalProxyFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -41,8 +41,6 @@
    // Class Members ------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 
-   private static final long serialVersionUID = 1L;
-
    private static final Logger logger = Logger.getLogger(StatelessSessionLocalProxyFactory.class);
 
    // --------------------------------------------------------------------------------||
@@ -52,14 +50,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this SLSB
     * @param classloader The ClassLoader associated with the StatelessContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public StatelessSessionLocalProxyFactory(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public StatelessSessionLocalProxyFactory(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(metadata, classloader);
+      super(name, metadata, classloader);
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionProxyFactoryBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionProxyFactoryBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionProxyFactoryBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -46,14 +46,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this SLSB
     * @param classloader The ClassLoader associated with the StatelessContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public StatelessSessionProxyFactoryBase(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public StatelessSessionProxyFactoryBase(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(metadata, classloader);
+      super(name, metadata, classloader);
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionRemoteProxyFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionRemoteProxyFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionRemoteProxyFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -40,7 +40,6 @@
    // --------------------------------------------------------------------------------||
    // Class Members ------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
-   private static final long serialVersionUID = 1L;
 
    private static final Logger logger = Logger.getLogger(StatelessSessionRemoteProxyFactory.class);
 
@@ -53,14 +52,16 @@
    /**
     * Constructor
     * 
+    * @param name The unique name for this ProxyFactory
     * @param metadata The metadata representing this SLSB
     * @param classloader The ClassLoader associated with the StatelessContainer
     *       for which this ProxyFactory is to generate Proxies
     */
-   public StatelessSessionRemoteProxyFactory(final JBossSessionBeanMetaData metadata, final ClassLoader classloader)
+   public StatelessSessionRemoteProxyFactory(final String name, final JBossSessionBeanMetaData metadata,
+         final ClassLoader classloader)
    {
       // Call Super
-      super(metadata, classloader);
+      super(name, metadata, classloader);
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandler.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandler.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandler.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -22,6 +22,7 @@
 
 package org.jboss.ejb3.proxy.handler;
 
+import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
 
 import org.jboss.ejb3.proxy.lang.SerializableMethod;
@@ -36,7 +37,7 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision$
  */
-public interface ProxyInvocationHandler extends InvocationHandler
+public interface ProxyInvocationHandler extends InvocationHandler, Serializable
 {
    Object getAsynchronousProxy(Object proxy);
 

Added: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandlerMetadata.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandlerMetadata.java	                        (rev 0)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/ProxyInvocationHandlerMetadata.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+  *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.proxy.handler;
+
+import org.jboss.remoting.InvokerLocator;
+
+/**
+ * ProxyInvocationHandlerMetadata
+ * 
+ * Contains Thread-specific Metadata for use in 
+ * Proxy Invocation Handlers, to provide
+ * additional context than that represented by 
+ * the API
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public abstract class ProxyInvocationHandlerMetadata
+{
+   // --------------------------------------------------------------------------------||
+   // Class Members ------------------------------------------------------------------||
+   // --------------------------------------------------------------------------------||
+
+   /**
+    * The InvokerLocator to use for Remoting for this Invocation
+    */
+   public static ThreadLocal<InvokerLocator> INVOKER_LOCATOR = new ThreadLocal<InvokerLocator>();
+}

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/SessionProxyInvocationHandlerBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/SessionProxyInvocationHandlerBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/SessionProxyInvocationHandlerBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -23,16 +23,25 @@
 
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aspects.remoting.InvokeRemoteInterceptor;
+import org.jboss.aspects.remoting.PojiProxy;
+import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
+import org.jboss.ejb3.common.registrar.spi.NotBoundException;
 import org.jboss.ejb3.common.string.StringUtils;
 import org.jboss.ejb3.proxy.container.InvokableContext;
 import org.jboss.ejb3.proxy.handler.NotEligibleForDirectInvocationException;
 import org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase;
+import org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerMetadata;
 import org.jboss.ejb3.proxy.lang.SerializableMethod;
+import org.jboss.ejb3.proxy.remoting.IsLocalProxyFactoryInterceptor;
 import org.jboss.logging.Logger;
+import org.jboss.remoting.InvokerLocator;
 
 /**
  * SessionProxyInvocationHandlerBase
@@ -100,13 +109,48 @@
       // Add rest of arguments
       invocationArguments.add(args);
 
+      /*
+       * Obtain the Container
+       */
+      InvokableContext<?> container = null;
+
+      // Attempt to obtain locally
+      try
+      {
+         Object obj = Ejb3RegistrarLocator.locateRegistrar().lookup(this.getContainerName());
+         assert obj instanceof InvokableContext : "Container retrieved from " + Ejb3Registrar.class.getSimpleName()
+               + " was not of expected type " + InvokableContext.class.getName() + " but was instead " + obj;
+         container = (InvokableContext<?>) obj;
+      }
+      // Remote
+      catch (NotBoundException nbe)
+      {
+         // Create a POJI Proxy to the Container
+         InvokerLocator locator = ProxyInvocationHandlerMetadata.INVOKER_LOCATOR.get();
+         Interceptor[] interceptors =
+         {IsLocalProxyFactoryInterceptor.singleton, InvokeRemoteInterceptor.singleton};
+         PojiProxy handler = new PojiProxy(this.getContainerName(), locator, interceptors);
+         Class<?>[] interfaces = new Class<?>[]
+         {InvokableContext.class};
+         container = (InvokableContext<?>) Proxy.newProxyInstance(interfaces[0].getClassLoader(), interfaces, handler);
+      }
+
+      /*
+       * Invoke
+       */
+
       // Invoke
-      //TODO This won't fly for remote, Object Store would be on another Process
-      log.debug("Invoking on Bean with name \"" + this.getContainerName() + "\" method \""
-            + InvokableContext.METHOD_NAME_INVOKE + "\" with arguments : " + invocationArguments);
-      return Ejb3RegistrarLocator.locateRegistrar().invoke(this.getContainerName(),
-            InvokableContext.METHOD_NAME_INVOKE, invocationArguments.toArray(new Object[]
-            {}), InvokableContext.METHOD_SIGNATURE_INVOKE);
+      SerializableMethod methodToInvoke = new SerializableMethod(method);
+      log.debug("Invoking: " + methodToInvoke + " with arguments " + args + "...");
+      Object result = container.invoke(proxy, methodToInvoke, args);
 
+      // Remove the Invoker Locator from this Thread, we've invoked already
+      //TODO Revisit/rethink this pattern; the InvokerLocator is set in the ObjectFactory, 
+      // yet removed after invocation in the handler here? 
+      ProxyInvocationHandlerMetadata.INVOKER_LOCATOR.set(null);
+
+      // Return
+      return result;
+
    }
 }

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateful/StatefulProxyInvocationHandler.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateful/StatefulProxyInvocationHandler.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateful/StatefulProxyInvocationHandler.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -46,6 +46,8 @@
    // Class Members ----------------------------------------------------------------||
    // ------------------------------------------------------------------------------||
 
+   private static final long serialVersionUID = 1L;
+
    private static final Logger log = Logger.getLogger(StatefulProxyInvocationHandler.class);
 
    // ------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateless/StatelessProxyInvocationHandler.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateless/StatelessProxyInvocationHandler.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/handler/session/stateless/StatelessProxyInvocationHandler.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -43,6 +43,8 @@
    // Class Members ----------------------------------------------------------------||
    // ------------------------------------------------------------------------------||
 
+   private static final long serialVersionUID = 1L;
+
    private static final Logger log = Logger.getLogger(StatelessProxyInvocationHandler.class);
 
    // ------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiSessionRegistrarBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiSessionRegistrarBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiSessionRegistrarBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -97,8 +97,6 @@
     */
    private String sessionProxyObjectFactoryType;
 
-   //TODO @Service, SFSB
-
    // --------------------------------------------------------------------------------||
    // Constructor --------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -187,30 +185,17 @@
        * Create and Register Proxy Factories
        */
 
-      // If there's a local view
-      String localProxyFactoryKey = null;
-      if (hasLocalView)
-      {
-         // Create and register a local proxy factory
-         SessionProxyFactory factory = this.createLocalProxyFactory(smd, cl);
-         localProxyFactoryKey = this.registerProxyFactory(factory, smd, true);
-      }
-
       // If there's a remote view
-      String remoteProxyFactoryKey = null;
-      if (hasRemoteView)
-      {
-         // Create and register a remote proxy factory
-         SessionProxyFactory factory = this.createRemoteProxyFactory(smd, cl);
-         remoteProxyFactoryKey = this.registerProxyFactory(factory, smd, false);
-      }
-
       /*
        * Bind Remote ObjectFactories to JNDI
        */
 
       if (hasRemoteView)
       {
+         // Create and register a remote proxy factory
+         String remoteProxyFactoryKey = this.getProxyFactoryRegistryKey(smd, false);
+         SessionProxyFactory factory = this.createRemoteProxyFactory(remoteProxyFactoryKey, smd, cl);
+         this.registerProxyFactory(remoteProxyFactoryKey, factory, smd);
 
          // Initialize Reference Addresses to attach to default remote JNDI Reference
          List<RefAddr> refAddrsForDefaultRemote = new ArrayList<RefAddr>();
@@ -295,9 +280,14 @@
 
          }
       }
-
+      // If there's a local view
       if (hasLocalView)
       {
+         // Create and register a local proxy factory
+         String localProxyFactoryKey = this.getProxyFactoryRegistryKey(smd, true);
+         SessionProxyFactory factory = this.createLocalProxyFactory(localProxyFactoryKey, smd, cl);
+         this.registerProxyFactory(localProxyFactoryKey, factory, smd);
+
          // Initialize Reference Addresses to attach to default local JNDI Reference
          List<RefAddr> refAddrsForDefaultLocal = new ArrayList<RefAddr>();
 
@@ -383,20 +373,22 @@
    /**
     * Creates and returns a new local proxy factory for this Session Bean
     * 
-    *  @param smd The metadata representing this Session EJB
-    *  @param cl The ClassLoader for this EJB Container
+    * @param name The unique name for the ProxyFactory
+    * @param smd The metadata representing this Session EJB
+    * @param cl The ClassLoader for this EJB Container
     */
-   protected abstract SessionProxyFactory createLocalProxyFactory(final JBossSessionBeanMetaData smd,
-         final ClassLoader cl);
+   protected abstract SessionProxyFactory createLocalProxyFactory(final String name,
+         final JBossSessionBeanMetaData smd, final ClassLoader cl);
 
    /**
     * Creates and returns a new remote proxy factory for this Session Bean
     * 
-    *  @param smd The metadata representing this Session EJB
-    *  @param cl The ClassLoader for this EJB Container
+    * @param name The unique name for the ProxyFactory
+    * @param smd The metadata representing this Session EJB
+    * @param cl The ClassLoader for this EJB Container
     */
-   protected abstract SessionProxyFactory createRemoteProxyFactory(final JBossSessionBeanMetaData smd,
-         final ClassLoader cl);
+   protected abstract SessionProxyFactory createRemoteProxyFactory(final String name,
+         final JBossSessionBeanMetaData smd, final ClassLoader cl);
 
    // --------------------------------------------------------------------------------||
    // Helper Methods -----------------------------------------------------------------||
@@ -416,14 +408,20 @@
    protected void bind(Reference ref, String address, String proxyFactoryRegistryKey, String containerName)
    {
       // Add the Proxy Factory Registry key for this Reference
-      RefAddr proxyFactoryRefAddr = new StringRefAddr(
-            ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_PROXY_FACTORY_REGISTRY_KEY, proxyFactoryRegistryKey);
+      assert proxyFactoryRegistryKey != null && !proxyFactoryRegistryKey.trim().equals("") : "Proxy Factory Registry key is required but not supplied";
+      String proxyFactoryRefType = ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_PROXY_FACTORY_REGISTRY_KEY;
+      RefAddr proxyFactoryRefAddr = new StringRefAddr(proxyFactoryRefType, proxyFactoryRegistryKey);
       ref.add(proxyFactoryRefAddr);
+      log.debug("Adding " + RefAddr.class.getSimpleName() + " to " + Reference.class.getSimpleName() + ": Type \""
+            + proxyFactoryRefType + "\", Content \"" + proxyFactoryRegistryKey + "\"");
 
       // Add the Container name for this Reference
-      RefAddr containerRefAddr = new StringRefAddr(ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_EJBCONTAINER_NAME,
-            containerName);
+      assert containerName != null && !containerName.trim().equals("") : "Container Name is required but not supplied";
+      String ejbContainerRefType = ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_EJBCONTAINER_NAME;
+      RefAddr containerRefAddr = new StringRefAddr(ejbContainerRefType, containerName);
       ref.add(containerRefAddr);
+      log.debug("Adding " + RefAddr.class.getSimpleName() + " to " + Reference.class.getSimpleName() + ": Type \""
+            + ejbContainerRefType + "\", Content \"" + containerName + "\"");
 
       // Bind
       try
@@ -551,21 +549,17 @@
    /**
     * Registers the specified proxy factory into the registry 
     * 
+    * @param name The unique name for the ProxyFactory
     * @param factory
     * @param smd Metadata describing the EJB
-    * @param isLocal
-    * @return The key under which the ProxyFactory was registered
     */
-   protected String registerProxyFactory(ProxyFactory factory, JBossEnterpriseBeanMetaData smd, boolean isLocal)
+   protected void registerProxyFactory(String name, ProxyFactory factory, JBossEnterpriseBeanMetaData smd)
    {
-      // Get a unique key
-      String key = this.getProxyFactoryRegistryKey(smd, isLocal);
-
       // Register
-      log.debug("Registering " + factory + " under key \"" + key + "\"...");
+      log.debug("Registering " + factory + " under key \"" + name + "\"...");
       try
       {
-         Ejb3RegistrarLocator.locateRegistrar().bind(key, factory);
+         Ejb3RegistrarLocator.locateRegistrar().bind(name, factory);
       }
       catch (DuplicateBindException e)
       {
@@ -577,12 +571,9 @@
           * and not the fault of the bean provider/developer/deployer
           */
 
-         throw new RuntimeException("Could not register " + factory + " under an already registered key, \"" + key
+         throw new RuntimeException("Could not register " + factory + " under an already registered key, \"" + name
                + "\"", e);
       }
-
-      // Return the key
-      return key;
    }
 
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatefulSessionRegistrar.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatefulSessionRegistrar.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatefulSessionRegistrar.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -23,9 +23,11 @@
 
 import javax.naming.Context;
 
+import org.jboss.aop.Dispatcher;
 import org.jboss.ejb3.proxy.factory.session.SessionProxyFactory;
 import org.jboss.ejb3.proxy.factory.session.stateful.StatefulSessionLocalProxyFactory;
 import org.jboss.ejb3.proxy.factory.session.stateful.StatefulSessionRemoteProxyFactory;
+import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
 
 /**
@@ -42,6 +44,12 @@
 {
 
    // --------------------------------------------------------------------------------||
+   // Class Members ------------------------------------------------------------------||
+   // --------------------------------------------------------------------------------||
+
+   private static final Logger log = Logger.getLogger(JndiStatefulSessionRegistrar.class);
+
+   // --------------------------------------------------------------------------------||
    // Constructor --------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 
@@ -64,25 +72,37 @@
    /**
     * Creates and returns a new local proxy factory for this SFSB
     * 
-    *  @param smd The metadata representing this SFSB
-    *  @param cl The ClassLoader for this EJB Container
+    * @param name The unique name for the ProxyFactory
+    * @param smd The metadata representing this SFSB
+    * @param cl The ClassLoader for this EJB Container
     */
    @Override
-   protected SessionProxyFactory createLocalProxyFactory(JBossSessionBeanMetaData smd, ClassLoader cl)
+   protected SessionProxyFactory createLocalProxyFactory(final String name, final JBossSessionBeanMetaData smd,
+         final ClassLoader cl)
    {
-      return new StatefulSessionLocalProxyFactory(smd, cl);
+      return new StatefulSessionLocalProxyFactory(name, smd, cl);
    }
 
    /**
     * Creates and returns a new remote proxy factory for this SFSB
     * 
-    *  @param smd The metadata representing this SFSB
-    *  @param cl The ClassLoader for this EJB Container
+    * @param name The unique name for the ProxyFactory
+    * @param smd The metadata representing this SFSB
+    * @param cl The ClassLoader for this EJB Container
     */
    @Override
-   protected SessionProxyFactory createRemoteProxyFactory(final JBossSessionBeanMetaData smd, final ClassLoader cl)
+   protected SessionProxyFactory createRemoteProxyFactory(final String name, final JBossSessionBeanMetaData smd,
+         final ClassLoader cl)
    {
-      return new StatefulSessionRemoteProxyFactory(smd, cl);
+      // Create
+      SessionProxyFactory factory = new StatefulSessionRemoteProxyFactory(name, smd, cl);
+
+      // Register with Remoting
+      log.debug("Registering with Remoting Dispatcher under name \"" + factory.getName() + "\": " + factory);
+      Dispatcher.singleton.registerTarget(factory.getName(), factory);
+
+      // Return
+      return factory;
    }
 
 }

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatelessSessionRegistrar.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatelessSessionRegistrar.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatelessSessionRegistrar.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -23,9 +23,11 @@
 
 import javax.naming.Context;
 
+import org.jboss.aop.Dispatcher;
 import org.jboss.ejb3.proxy.factory.session.SessionProxyFactory;
 import org.jboss.ejb3.proxy.factory.session.stateless.StatelessSessionLocalProxyFactory;
 import org.jboss.ejb3.proxy.factory.session.stateless.StatelessSessionRemoteProxyFactory;
+import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
 
 /**
@@ -40,7 +42,12 @@
  */
 public class JndiStatelessSessionRegistrar extends JndiSessionRegistrarBase
 {
+   // --------------------------------------------------------------------------------||
+   // Class Members ------------------------------------------------------------------||
+   // --------------------------------------------------------------------------------||
 
+   private static final Logger log = Logger.getLogger(JndiStatelessSessionRegistrar.class);
+
    // --------------------------------------------------------------------------------||
    // Constructor --------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -64,25 +71,36 @@
    /**
     * Creates and returns a new local proxy factory for this SLSB
     * 
-    *  @param smd The metadata representing this SLSB
-    *  @param cl The ClassLoader for this EJB Container
+    * @param name The unique name for the ProxyFactory
+    * @param smd The metadata representing this SLSB
+    * @param cl The ClassLoader for this EJB Container
     */
    @Override
-   protected SessionProxyFactory createLocalProxyFactory(JBossSessionBeanMetaData smd, ClassLoader cl)
+   protected SessionProxyFactory createLocalProxyFactory(final String name, JBossSessionBeanMetaData smd, ClassLoader cl)
    {
-      return new StatelessSessionLocalProxyFactory(smd, cl);
+      return new StatelessSessionLocalProxyFactory(name, smd, cl);
    }
 
    /**
     * Creates and returns a new remote proxy factory for this Session Bean
     * 
-    *  @param smd The metadata representing this Session EJB
-    *  @param cl The ClassLoader for this EJB Container
+    * @param name The unique name for the ProxyFactory
+    * @param smd The metadata representing this Session EJB
+    * @param cl The ClassLoader for this EJB Container
     */
    @Override
-   protected SessionProxyFactory createRemoteProxyFactory(final JBossSessionBeanMetaData smd, final ClassLoader cl)
+   protected SessionProxyFactory createRemoteProxyFactory(final String name, final JBossSessionBeanMetaData smd,
+         final ClassLoader cl)
    {
-      return new StatelessSessionRemoteProxyFactory(smd, cl);
+      // Create
+      SessionProxyFactory factory = new StatelessSessionRemoteProxyFactory(name, smd, cl);
+
+      // Register with Remoting
+      log.debug("Registering with Remoting Dispatcher under name \"" + factory.getName() + "\": " + factory);
+      Dispatcher.singleton.registerTarget(factory.getName(), factory);
+
+      // Return
+      return factory;
    }
 
 }

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -43,8 +43,8 @@
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.common.registrar.spi.NotBoundException;
 import org.jboss.ejb3.proxy.factory.ProxyFactory;
+import org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerMetadata;
 import org.jboss.ejb3.proxy.remoting.IsLocalProxyFactoryInterceptor;
-import org.jboss.ejb3.proxy.remoting.RemotingTargetIds;
 import org.jboss.logging.Logger;
 import org.jboss.remoting.InvokerLocator;
 
@@ -105,50 +105,63 @@
       String proxyFactoryRegistryKey = this.getSingleRequiredReferenceAddressValue(name, refAddrs,
             ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_PROXY_FACTORY_REGISTRY_KEY);
 
-      // Obtain the URL for invoking upon the Registry
-      String url = this.getSingleReferenceAddressValue(name, refAddrs,
-            ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_INVOKER_LOCATOR_URL);
+      /*
+       * Obtain the Proxy Factory either
+       * locally via the Ejb3Registry, or
+       * via the remote Dispatcher
+       */
 
-      // Initialize Ejb3Registrar
-      Ejb3Registrar registrar = null;
+      // Obtain Proxy Factory
+      ProxyFactory proxyFactory = null;
 
-      // If Remoting Defined
-      if (url != null)
+      try
       {
+         // Attempt to get local EJB3 Registrar
+         Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
+
+         // Local lookup succeeded, so use it
+         try
+         {
+            Object pfObj = registrar.lookup(proxyFactoryRegistryKey);
+            assert pfObj != null : ProxyFactory.class.getName() + " from key " + proxyFactoryRegistryKey + " was null";
+            assert pfObj instanceof ProxyFactory : " Object obtained from key " + proxyFactoryRegistryKey
+                  + " was expected to be of type " + ProxyFactory.class.getName() + " but was instead " + pfObj;
+            proxyFactory = (ProxyFactory) pfObj;
+         }
+         catch (NotBoundException nbe)
+         {
+            throw new RuntimeException("Could not obtain " + ProxyFactory.class.getSimpleName()
+                  + " from expected key \"" + proxyFactoryRegistryKey + "\"", nbe);
+         }
+      }
+      // Registrar is not local, so use Remoting to Obtain Proxy Factory
+      catch (NotBoundException nbe)
+      {
+         // Obtain the URL for invoking upon the Registry
+         String url = this.getSingleReferenceAddressValue(name, refAddrs,
+               ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_INVOKER_LOCATOR_URL);
+
+         // Create an InvokerLocator
+         InvokerLocator locator = new InvokerLocator(url);
+
+         // Make the Locator available within Thread scope
+         ProxyInvocationHandlerMetadata.INVOKER_LOCATOR.set(locator);
+
          // Create a POJI Proxy to the Registrar
-         InvokerLocator locator = new InvokerLocator(url);
          Interceptor[] interceptors =
          {IsLocalProxyFactoryInterceptor.singleton, InvokeRemoteInterceptor.singleton};
-         PojiProxy handler = new PojiProxy(RemotingTargetIds.TARGET_ID_EJB_REGISTRAR, locator, interceptors);
+         PojiProxy handler = new PojiProxy(proxyFactoryRegistryKey, locator, interceptors);
          Class<?>[] interfaces = new Class<?>[]
-         {Ejb3Registrar.class};
-         registrar = (Ejb3Registrar) Proxy.newProxyInstance(interfaces[0].getClassLoader(), interfaces, handler);
-      }
-      // Local
-      else
-      {
-         registrar = Ejb3RegistrarLocator.locateRegistrar();
-      }
+         {this.getProxyFactoryClass()};
+         proxyFactory = (ProxyFactory) Proxy.newProxyInstance(interfaces[0].getClassLoader(), interfaces, handler);
 
-      // Obtain Proxy Factory
-      ProxyFactory proxyFactory = null;
-      try
-      {
-         Object pfObj = registrar.lookup(proxyFactoryRegistryKey);
-         assert pfObj != null : ProxyFactory.class.getName() + " from key " + proxyFactoryRegistryKey + " was null";
-         assert pfObj instanceof ProxyFactory : " Object obtained from key " + proxyFactoryRegistryKey
-               + " was expected to be of type " + ProxyFactory.class.getName() + " but was instead " + pfObj;
-         proxyFactory = (ProxyFactory) pfObj;
       }
-      catch (NotBoundException nbe)
-      {
-         throw new RuntimeException("Could not obtain " + ProxyFactory.class.getSimpleName() + " from expected key \""
-               + proxyFactoryRegistryKey + "\"", nbe);
-      }
 
-      // Return the proxy returned from the ProxyFactory
+      // Get the proxy returned from the ProxyFactory
       Object proxy = this.getProxy(proxyFactory, name, refAddrs);
       assert proxy != null : "Proxy returned from " + proxyFactory + " was null.";
+
+      // Return the Proxy
       return proxy;
    }
 
@@ -207,6 +220,12 @@
 
    protected abstract Object getProxy(ProxyFactory proxyFactory, Name name, Map<String, List<String>> referenceAddresses);
 
+   /**
+    * Obtains the type or supertype used by proxy factories for this Object Factory
+    * @return
+    */
+   protected abstract Class<?> getProxyFactoryClass();
+
    // --------------------------------------------------------------------------------||
    // Internal Helper Methods --------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -234,7 +253,9 @@
          RefAddr refAddr = refAddrs.nextElement();
          String type = refAddr.getType();
          Class<?> expectedContentsType = String.class;
-         assert (expectedContentsType.isAssignableFrom(refAddr.getContent().getClass())) : "Content of Reference Address of type \""
+         Object refAddrContent = refAddr.getContent();
+         assert (refAddrContent != null) : "Encountered Reference Address of type " + type + " but with null Content";
+         assert (expectedContentsType.isAssignableFrom(refAddrContent.getClass())) : "Content of Reference Address of type \""
                + type + "\" at index " + count + " was not of expected Java type " + expectedContentsType.getName();
          String content = (String) refAddr.getContent();
 

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -80,10 +80,17 @@
       boolean hasBusiness = this.hasBusiness(name, referenceAddresses);
 
       // Cast
-      assert factory instanceof SessionProxyFactory : ProxyFactory.class.getSimpleName() + " used in "
-            + SessionProxyObjectFactory.class.getSimpleName() + " must be of type "
-            + SessionProxyFactory.class.getName();
-      SessionProxyFactory sFactory = (SessionProxyFactory) factory;
+      SessionProxyFactory sFactory = null;
+      try
+      {
+         sFactory = SessionProxyFactory.class.cast(factory);
+      }
+      catch (ClassCastException cce)
+      {
+         throw new RuntimeException(ProxyFactory.class.getSimpleName() + " used in "
+               + SessionProxyObjectFactory.class.getSimpleName() + " must be of type "
+               + SessionProxyFactory.class.getName() + " but was instead " + factory, cce);
+      }
 
       // If home and business are bound together
       if (hasHome && hasBusiness)
@@ -157,6 +164,15 @@
       return proxy;
    }
 
+   /**
+    * Obtains the type or supertype used by proxy factories for this Object Factory
+    * @return
+    */
+   protected Class<?> getProxyFactoryClass()
+   {
+      return SessionProxyFactory.class;
+   }
+
    // --------------------------------------------------------------------------------||
    // Helper Methods -----------------------------------------------------------------||
    // --------------------------------------------------------------------------------||

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateful/StatefulSessionProxyObjectFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateful/StatefulSessionProxyObjectFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateful/StatefulSessionProxyObjectFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -28,12 +28,20 @@
 
 import javax.naming.Name;
 
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aspects.remoting.InvokeRemoteInterceptor;
+import org.jboss.aspects.remoting.PojiProxy;
+import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.common.registrar.spi.NotBoundException;
 import org.jboss.ejb3.proxy.container.StatefulSessionInvokableContext;
 import org.jboss.ejb3.proxy.factory.ProxyFactory;
+import org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerMetadata;
 import org.jboss.ejb3.proxy.handler.session.stateful.StatefulProxyInvocationHandler;
+import org.jboss.ejb3.proxy.objectfactory.ProxyFactoryReferenceAddressTypes;
 import org.jboss.ejb3.proxy.objectfactory.session.SessionProxyObjectFactory;
+import org.jboss.ejb3.proxy.remoting.IsLocalProxyFactoryInterceptor;
+import org.jboss.remoting.InvokerLocator;
 
 /**
  * StatefulSessionProxyObjectFactory
@@ -75,14 +83,41 @@
             + StatefulProxyInvocationHandler.class.getName();
       StatefulProxyInvocationHandler sHandler = (StatefulProxyInvocationHandler) handler;
 
+      /*
+       * Obtain the Container
+       */
+      StatefulSessionInvokableContext<?> container = null;
+      String containerName = this.getSingleRequiredReferenceAddressValue(name, referenceAddresses,
+            ProxyFactoryReferenceAddressTypes.REF_ADDR_TYPE_EJBCONTAINER_NAME);
+
+      // Attempt to obtain locally
+      try
+      {
+         Object obj = Ejb3RegistrarLocator.locateRegistrar().lookup(containerName);
+         assert obj instanceof StatefulSessionInvokableContext : "Container retrieved from "
+               + Ejb3Registrar.class.getSimpleName() + " was not of expected type "
+               + StatefulSessionInvokableContext.class.getName() + " but was instead " + obj;
+         container = (StatefulSessionInvokableContext<?>) obj;
+      }
+      // Remote
+      catch (NotBoundException nbe)
+      {
+         // Create a POJI Proxy to the Container
+         InvokerLocator locator = ProxyInvocationHandlerMetadata.INVOKER_LOCATOR.get();
+         Interceptor[] interceptors =
+         {IsLocalProxyFactoryInterceptor.singleton, InvokeRemoteInterceptor.singleton};
+         PojiProxy proxyHandler = new PojiProxy(containerName, locator, interceptors);
+         Class<?>[] interfaces = new Class<?>[]
+         {StatefulSessionInvokableContext.class};
+         container = (StatefulSessionInvokableContext<?>) Proxy.newProxyInstance(interfaces[0].getClassLoader(),
+               interfaces, proxyHandler);
+      }
+
       // Get a new Session ID from the Container
-      String containerName = sHandler.getContainerName();
       Object sessionId = null;
       try
       {
-         sessionId = Ejb3RegistrarLocator.locateRegistrar().invoke(containerName,
-               StatefulSessionInvokableContext.METHOD_NAME_CREATESESSION, null,
-               StatefulSessionInvokableContext.METHOD_SIGNATURE_CREATESESSION);
+         sessionId = container.createSession();
       }
       catch (NotBoundException e)
       {

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateless/StatelessSessionProxyObjectFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateless/StatelessSessionProxyObjectFactory.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/stateless/StatelessSessionProxyObjectFactory.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -59,6 +59,9 @@
     * Home
     * Business
     * One per interface-specific business
+    * 
+    * This cache will have to be done at the Server Side as ObjectFactory is a 
+    * client-specific construct recreated upon each lookup
     */
    /**
     * SLSB Object Factories must always create a new SLSB Proxy if one is not

Deleted: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/remoting/RemotingTargetIds.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/remoting/RemotingTargetIds.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/remoting/RemotingTargetIds.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -1,47 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
-  *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ejb3.proxy.remoting;
-
-import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
-
-/**
- * RemotingTargetIds
- * 
- * This interface defines the key constants used as 
- * valid Remoting Target IDs for use in the
- * Dispatcher singleton
- *
- * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
- * @version $Revision: $
- */
-public interface RemotingTargetIds
-{
-   // --------------------------------------------------------------------------------||
-   // Constants ----------------------------------------------------------------------||
-   // --------------------------------------------------------------------------------||
-
-   /**
-    * ID of the EJB3 Registrar
-    */
-   String TARGET_ID_EJB_REGISTRAR = Ejb3Registrar.class.getSimpleName();
-
-}
\ No newline at end of file

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/container/SessionContainer.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/container/SessionContainer.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/container/SessionContainer.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -25,6 +25,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.jboss.aop.Dispatcher;
 import org.jboss.beans.metadata.api.annotations.Start;
 import org.jboss.beans.metadata.api.annotations.Stop;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
@@ -165,6 +166,9 @@
    public void start() throws Throwable
    {
       log.info("Starting " + this);
+      
+      // Register with Remoting
+      Dispatcher.singleton.registerTarget(this.getName(), this);
 
       // Obtain registrar
       JndiSessionRegistrarBase registrar = this.getJndiRegistrar();
@@ -186,6 +190,9 @@
    public void stop()
    {
       log.info("Stopping " + this);
+      
+      // Deregister with Remoting
+      Dispatcher.singleton.unregisterTarget(this.getName());
 
       //TODO We need to unbind the EJB, something like:
       //JndiSessionRegistrarBase.unbindEjb(this.metaData);

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -1,12 +1,12 @@
 package org.jboss.ejb3.test.proxy.remoteaccess;
 
-import org.jboss.aop.Dispatcher;
 import org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
-import org.jboss.ejb3.proxy.remoting.RemotingTargetIds;
 import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
 import org.jboss.ejb3.test.proxy.common.Utils;
+import org.jboss.ejb3.test.proxy.common.container.StatefulContainer;
 import org.jboss.ejb3.test.proxy.common.container.StatelessContainer;
+import org.jboss.ejb3.test.proxy.common.ejb.sfsb.MyStatefulBean;
 import org.jboss.ejb3.test.proxy.common.ejb.slsb.MyStatelessBean;
 import org.jboss.logging.Logger;
 
@@ -37,11 +37,6 @@
    private EmbeddedTestMcBootstrap bootstrap;
 
    /**
-    * Name of the SLSB Container for these tests
-    */
-   private String containerName;
-
-   /**
     * The Test Class using this launcher
     */
    private Class<?> testClass;
@@ -105,10 +100,6 @@
    protected void initialize() throws Throwable
    {
 
-      // Switch up to the hacky CL so that "jndi.properties" is not loaded
-      ClassLoader olderLoader = Thread.currentThread().getContextClassLoader();
-      Thread.currentThread().setContextClassLoader(new JndiPropertiesToJnpserverPropertiesHackCl());
-
       // Create and set a new MC Bootstrap 
       this.setBootstrap(EmbeddedTestMcBootstrap.createEmbeddedMcBootstrap());
 
@@ -118,24 +109,28 @@
       // Bind the Ejb3Registrar
       Ejb3RegistrarLocator.bindRegistrar(new Ejb3McRegistrar(bootstrap.getKernel()));
 
-      // Register the EJB3 Registrar with Remoting
-      Dispatcher.singleton.registerTarget(RemotingTargetIds.TARGET_ID_EJB_REGISTRAR, Ejb3RegistrarLocator
-            .locateRegistrar());
+      // Switch up to the hacky CL so that "jndi.properties" is not loaded
+      ClassLoader olderLoader = Thread.currentThread().getContextClassLoader();
+      Thread.currentThread().setContextClassLoader(new JndiPropertiesToJnpserverPropertiesHackCl());
 
       // Deploy *-beans.xml
       this.getBootstrap().deploy(this.getTestClass());
 
+      // Restore old CL
+      Thread.currentThread().setContextClassLoader(olderLoader);
+
       // Create a SLSB Container
-      StatelessContainer container = Utils.createSlsb(MyStatelessBean.class);
-      log.info("Created SLSB Container: " + container.getName());
-      this.setContainerName(container.getName());
+      StatelessContainer slsbContainer = Utils.createSlsb(MyStatelessBean.class);
+      log.info("Created SLSB Container: " + slsbContainer.getName());
 
+      // Create a SFSB Container
+      StatefulContainer sfsbContainer = Utils.createSfsb(MyStatefulBean.class);
+      log.info("Created SFSB Container: " + sfsbContainer.getName());
+
       // Install into MC
-      this.getBootstrap().installInstance(container.getName(), container);
+      this.getBootstrap().installInstance(slsbContainer.getName(), slsbContainer);
+      this.getBootstrap().installInstance(sfsbContainer.getName(), sfsbContainer);
 
-      // Restore old CL
-      Thread.currentThread().setContextClassLoader(olderLoader);
-
    }
 
    // --------------------------------------------------------------------------------||
@@ -226,16 +221,6 @@
    // Accessors / Mutators -----------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 
-   public String getContainerName()
-   {
-      return this.containerName;
-   }
-
-   public void setContainerName(String containerName)
-   {
-      this.containerName = containerName;
-   }
-
    public EmbeddedTestMcBootstrap getBootstrap()
    {
       return this.bootstrap;

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -28,10 +28,11 @@
 import java.io.File;
 import java.io.FileReader;
 
+import javax.naming.Context;
 import javax.naming.InitialContext;
 
 import org.jboss.ejb3.common.thread.RedirectProcessOutputToSystemOutThread;
-import org.jboss.ejb3.test.proxy.common.ejb.slsb.MyStatelessLocal;
+import org.jboss.ejb3.test.proxy.common.ejb.sfsb.MyStatefulRemoteBusiness;
 import org.jboss.ejb3.test.proxy.common.ejb.slsb.MyStatelessRemote;
 import org.jboss.ejb3.test.proxy.remoteaccess.JndiPropertiesToJndiRemotePropertiesHackCl;
 import org.jboss.ejb3.test.proxy.remoteaccess.MockServer;
@@ -75,6 +76,8 @@
 
    private static Process remoteProcess;
 
+   private static Context context;
+
    // --------------------------------------------------------------------------------||
    // Instance Members ---------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -83,25 +86,35 @@
    // Tests --------------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
 
+   /**
+    * Ensures that a SLSB Remote invocation succeeds
+    */
    @Test
-   public void testInvocation() throws Throwable
+   public void testStatelessSessionRemoteInvocation() throws Throwable
    {
+      Object bean = RemoteAccessTestCase.getContext().lookup("MyStatelessBean/remote");
+      assertTrue("Bean was not of expected type " + MyStatelessRemote.class.getName() + " but was instead " + bean,
+            bean instanceof MyStatelessRemote);
 
-      // Switch up to the hacky CL so that "jndi.properties" is not loaded, and uses instead "jndi-remote.properties"
-      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
-      Thread.currentThread().setContextClassLoader(new JndiPropertiesToJndiRemotePropertiesHackCl());
+      String result = ((MyStatelessRemote) bean).sayHi("testRemote");
+      String expected = "Hi testRemote";
+      assertEquals("Result was not expected", expected, result);
+   }
 
-      InitialContext ctx = new InitialContext();
+   /**
+    * Ensures that a SFSB Remote invocation succeeds
+    */
+   @Test
+   public void testStatefulSessionRemoteInvocation() throws Throwable
+   {
+      // Obtain the Proxy
+      Object bean = RemoteAccessTestCase.getContext().lookup("MyStatefulBean/remote");
+      assertTrue("Bean must be assignable to " + MyStatefulRemoteBusiness.class.getSimpleName() + " but was instead "
+            + bean.getClass(), bean instanceof MyStatefulRemoteBusiness);
 
-      // Replace the CL
-      Thread.currentThread().setContextClassLoader(oldLoader);
-
-      Object bean = ctx.lookup("MyStatelessBean/remote");
-      assertTrue(bean instanceof MyStatelessLocal);
-
-      String result = ((MyStatelessRemote) bean).sayHi("testRemote");
-      assertEquals("Hi testRemote", result);
-
+      // Invoke and Test Result
+      int result = ((MyStatefulRemoteBusiness) bean).getNextCounter();
+      assertEquals(result, 0);
    }
 
    // --------------------------------------------------------------------------------||
@@ -114,6 +127,15 @@
    @BeforeClass
    public static void beforeClass() throws Throwable
    {
+      // Switch up to the hacky CL so that "jndi.properties" is not loaded, and uses instead "jndi-remote.properties"
+      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+      Thread.currentThread().setContextClassLoader(new JndiPropertiesToJndiRemotePropertiesHackCl());
+
+      RemoteAccessTestCase.setContext(new InitialContext());
+
+      // Replace the CL
+      Thread.currentThread().setContextClassLoader(oldLoader);
+
       // Start Server
       RemoteAccessTestCase.invokeRemoteMockServerProcess(RemoteAccessTestCase.class.getName());
 
@@ -130,7 +152,7 @@
    public static void afterClass() throws Throwable
    {
       /*
-       * This is far from a graceful shutdown, but hey, this is only for a test
+       * This is far from a graceful shutdown, but hey, this is only a test
        */
       Process p = RemoteAccessTestCase.getRemoteProcess();
       p.destroy();
@@ -222,9 +244,19 @@
       return remoteProcess;
    }
 
-   public static void setRemoteProcess(Process remoteProcess)
+   protected static void setRemoteProcess(Process remoteProcess)
    {
       RemoteAccessTestCase.remoteProcess = remoteProcess;
    }
 
+   public static Context getContext()
+   {
+      return context;
+   }
+
+   protected static void setContext(Context context)
+   {
+      RemoteAccessTestCase.context = context;
+   }
+
 }

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxySessionTestCaseBase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxySessionTestCaseBase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxySessionTestCaseBase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -21,10 +21,8 @@
  */
 package org.jboss.ejb3.test.proxy.session.unit;
 
-import org.jboss.aop.Dispatcher;
 import org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
-import org.jboss.ejb3.proxy.remoting.RemotingTargetIds;
 import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
 
 /**
@@ -55,9 +53,5 @@
 
       // Bind the Registrar
       Ejb3RegistrarLocator.bindRegistrar(new Ejb3McRegistrar(bootstrap.getKernel()));
-      
-      // Register the EJB3 Registrar with Remoting
-      Dispatcher.singleton.registerTarget(RemotingTargetIds.TARGET_ID_EJB_REGISTRAR, Ejb3RegistrarLocator
-            .locateRegistrar());
    }
 }

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxyStatefulSessionTestCase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxyStatefulSessionTestCase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/session/unit/ProxyStatefulSessionTestCase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -73,7 +73,6 @@
    @Test
    public void testLocalBusiness() throws Exception
    {
-
       // Obtain the Proxy
       Object bean = ProxyStatefulSessionTestCase.context.lookup("MyStatefulBean/local");
       assertTrue("Bean must be assignable to " + MyStatefulLocalBusiness.class.getSimpleName() + " but was instead "
@@ -92,7 +91,6 @@
    @Test
    public void testRemoteBusiness() throws Exception
    {
-
       // Obtain the Proxy
       Object bean = ProxyStatefulSessionTestCase.context.lookup("MyStatefulBean/remote");
       assertTrue("Bean must be assignable to " + MyStatefulRemoteBusiness.class.getSimpleName() + " but was instead "

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SfsbProxyEqualityTestCase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SfsbProxyEqualityTestCase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SfsbProxyEqualityTestCase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -203,8 +203,8 @@
       StatefulContainer sfsb = this.getContainer();
 
       // Make a Local Proxy Factory
-      StatefulSessionLocalProxyFactory factory = new StatefulSessionLocalProxyFactory(sfsb.getMetaData(), sfsb
-            .getClassLoader());
+      StatefulSessionLocalProxyFactory factory = new StatefulSessionLocalProxyFactory(
+            StatefulSessionLocalProxyFactory.class.getName(), sfsb.getMetaData(), sfsb.getClassLoader());
 
       // Start
       factory.start();
@@ -226,8 +226,8 @@
       StatefulContainer sfsb = this.getContainer();
 
       // Make a Remote Proxy Factory
-      StatefulSessionRemoteProxyFactory factory = new StatefulSessionRemoteProxyFactory(sfsb.getMetaData(), sfsb
-            .getClassLoader());
+      StatefulSessionRemoteProxyFactory factory = new StatefulSessionRemoteProxyFactory(
+            StatefulSessionRemoteProxyFactory.class.getName(), sfsb.getMetaData(), sfsb.getClassLoader());
 
       // Start
       factory.start();

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SlsbProxyEqualityTestCase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SlsbProxyEqualityTestCase.java	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SlsbProxyEqualityTestCase.java	2008-05-30 06:27:36 UTC (rev 73827)
@@ -70,7 +70,7 @@
       // Create 2 Proxies
       Object proxy1 = factory.createProxyDefault();
       Object proxy2 = factory.createProxyDefault();
-      
+
       // Manually set the target container
       this.setContainerNameOnProxy(proxy1);
       this.setContainerNameOnProxy(proxy2);
@@ -98,7 +98,7 @@
       // Create 2 Proxies
       Object proxy1 = factory.createProxyDefault();
       Object proxy2 = factory.createProxyDefault();
-      
+
       // Manually set the target container
       this.setContainerNameOnProxy(proxy1);
       this.setContainerNameOnProxy(proxy2);
@@ -158,8 +158,8 @@
       SessionContainer container = this.getContainer();
 
       // Create the Factory
-      StatelessSessionLocalProxyFactory factory = new StatelessSessionLocalProxyFactory(container.getMetaData(),
-            container.getClassLoader());
+      StatelessSessionLocalProxyFactory factory = new StatelessSessionLocalProxyFactory(
+            StatelessSessionLocalProxyFactory.class.getName(), container.getMetaData(), container.getClassLoader());
 
       // Start
       factory.start();
@@ -181,8 +181,8 @@
       SessionContainer container = this.getContainer();
 
       // Create the Factory
-      StatelessSessionRemoteProxyFactory factory = new StatelessSessionRemoteProxyFactory(container.getMetaData(),
-            container.getClassLoader());
+      StatelessSessionRemoteProxyFactory factory = new StatelessSessionRemoteProxyFactory(
+            StatelessSessionRemoteProxyFactory.class.getName(), container.getMetaData(), container.getClassLoader());
 
       // Start
       factory.start();

Modified: projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml
===================================================================
--- projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml	2008-05-30 00:08:06 UTC (rev 73826)
+++ projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml	2008-05-30 06:27:36 UTC (rev 73827)
@@ -13,7 +13,7 @@
 
   <bean name="NamingBeanImpl" class="org.jnp.server.NamingBeanImpl" />
 
-  <bean name="Naming" class="org.jnp.server.Main">
+  <bean name="NameServer" class="org.jnp.server.Main">
     <property name="namingInfo">
       <inject bean="NamingBeanImpl" />
     </property>
@@ -46,9 +46,23 @@
         org.jboss.ejb3.proxy.objectfactory.session.stateless.StatelessSessionProxyObjectFactory
       </parameter>
     </constructor>
-    <depends>Naming</depends>
+    <depends>NameServer</depends>
   </bean>
 
+  <!-- SFSB JNDI Registrar -->
+  <bean name="org.jboss.ejb3.JndiRegistrar.Session.SFSBJndiRegistrar"
+    class="org.jboss.ejb3.proxy.jndiregistrar.JndiStatefulSessionRegistrar">
+    <constructor>
+      <parameter>
+        <inject bean="org.jboss.ejb3.JndiContext" />
+      </parameter>
+      <parameter>
+        org.jboss.ejb3.proxy.objectfactory.session.stateful.StatefulSessionProxyObjectFactory
+      </parameter>
+    </constructor>
+    <depends>NameServer</depends>
+  </bean>
+
   <!-- JNDI Registrar Configuration -->
   <bean name="org.jboss.ejb3.JndiContext"
     class="javax.naming.InitialContext" />




More information about the jboss-cvs-commits mailing list