[jboss-cvs] JBossAS SVN: r79056 - in projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3: session and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Oct 3 04:56:18 EDT 2008


Author: ALRubinger
Date: 2008-10-03 04:56:18 -0400 (Fri, 03 Oct 2008)
New Revision: 79056

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
[EJBTHREE-1512] Clean up Containers to use new EJB3 Proxy in favor of vestigial code when invoking upon EJB2.x operations

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java	2008-10-03 08:53:33 UTC (rev 79055)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java	2008-10-03 08:56:18 UTC (rev 79056)
@@ -60,6 +60,7 @@
 import org.jboss.ejb3.proxy.factory.RemoteProxyFactory;
 import org.jboss.ejb3.proxy.factory.service.ServiceLocalProxyFactory;
 import org.jboss.ejb3.proxy.factory.service.ServiceRemoteProxyFactory;
+import org.jboss.ejb3.proxy.factory.session.SessionProxyFactory;
 import org.jboss.ejb3.session.SessionContainer;
 import org.jboss.ejb3.stateful.StatefulContainerInvocation;
 import org.jboss.ejb3.timerservice.TimedObjectInvoker;
@@ -67,6 +68,7 @@
 import org.jboss.injection.Injector;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
+import org.jboss.util.NotImplementedException;
 
 /**
  * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
@@ -132,8 +134,20 @@
    }
    
    @Override
-   protected RemoteProxyFactory getProxyFactory(RemoteBinding binding)
+   protected SessionProxyFactory getProxyFactory(RemoteBinding binding)
    {
+      throw new NotImplementedException(
+            "@Service does not yet use EJB3 Proxy Implementation, call 'getProxyFactoryForService' instead");
+   }
+
+   /**
+    * @param binding
+    * @return
+    * @deprecated Until @Service uses EJB3 Proxy
+    */
+   @Deprecated
+   public RemoteProxyFactory getProxyFactoryForService(RemoteBinding binding)
+   {
       // TODO Implement clustering
       return new ServiceRemoteProxyFactory(this, binding);
    }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java	2008-10-03 08:53:33 UTC (rev 79055)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java	2008-10-03 08:56:18 UTC (rev 79056)
@@ -39,6 +39,7 @@
 import org.jboss.ejb3.proxy.ProxyFactory;
 import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
 import org.jboss.ejb3.proxy.factory.RemoteProxyFactory;
+import org.jboss.ejb3.service.ServiceContainer;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
 
@@ -48,6 +49,7 @@
  * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
  * @version $Revision$
  */
+ at Deprecated
 public class ProxyDeployer
 {
    private static final Logger log = Logger.getLogger(ProxyDeployer.class);
@@ -117,7 +119,8 @@
             String factoryImplementationRegistryKey = binding.factory();
             if (factoryImplementationRegistryKey.equals(RemoteBindingDefaults.PROXY_FACTORY_DEFAULT))
             {
-               factory = container.getProxyFactory(binding);
+               //TODO Only used in @Service now, this whole class is @Deprecated
+               factory = ((ServiceContainer)container).getProxyFactoryForService(binding);
             }
             else
             {

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java	2008-10-03 08:53:33 UTC (rev 79055)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java	2008-10-03 08:56:18 UTC (rev 79056)
@@ -27,12 +27,9 @@
 import java.rmi.Remote;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalHome;
@@ -63,17 +60,13 @@
 import org.jboss.ejb3.proxy.ProxyUtils;
 import org.jboss.ejb3.proxy.clustered.objectstore.ClusteredObjectStoreBindings;
 import org.jboss.ejb3.proxy.clustered.registry.ProxyClusteringRegistry;
-import org.jboss.ejb3.proxy.container.InvokableContext;
 import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
-import org.jboss.ejb3.proxy.factory.RemoteProxyFactory;
 import org.jboss.ejb3.proxy.factory.SessionProxyFactory;
 import org.jboss.ejb3.remoting.IsLocalInterceptor;
 import org.jboss.ejb3.stateful.StatefulContainerInvocation;
 import org.jboss.ha.framework.server.HATarget;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
-import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
 import org.jboss.serial.io.MarshalledObjectForLocalCalls;
 
 /**
@@ -129,7 +122,7 @@
     * @param binding
     * @return
     */
-   protected abstract RemoteProxyFactory getProxyFactory(RemoteBinding binding);
+   protected abstract org.jboss.ejb3.proxy.factory.session.SessionProxyFactory getProxyFactory(RemoteBinding binding);
    
    public abstract InvocationResponse dynamicInvoke(Object target, Invocation invocation) throws Throwable;
 

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2008-10-03 08:53:33 UTC (rev 79055)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2008-10-03 08:56:18 UTC (rev 79056)
@@ -53,6 +53,7 @@
 import org.jboss.aspects.asynch.FutureHolder;
 import org.jboss.ejb3.BeanContext;
 import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.Ejb3Registry;
 import org.jboss.ejb3.annotation.Cache;
 import org.jboss.ejb3.annotation.CacheConfig;
 import org.jboss.ejb3.annotation.Clustered;
@@ -63,15 +64,18 @@
 import org.jboss.ejb3.cache.StatefulCache;
 import org.jboss.ejb3.cache.StatefulObjectFactory;
 import org.jboss.ejb3.common.lang.SerializableMethod;
+import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.interceptors.container.StatefulSessionContainerMethodInvocation;
 import org.jboss.ejb3.proxy.ProxyUtils;
+import org.jboss.ejb3.proxy.clustered.factory.session.stateful.StatefulSessionClusteredProxyFactory;
 import org.jboss.ejb3.proxy.clustered.objectstore.ClusteredObjectStoreBindings;
+import org.jboss.ejb3.proxy.clustered.registry.ProxyClusteringRegistry;
 import org.jboss.ejb3.proxy.container.StatefulSessionInvokableContext;
 import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
+import org.jboss.ejb3.proxy.factory.session.SessionProxyFactory;
 import org.jboss.ejb3.proxy.factory.session.stateful.StatefulSessionProxyFactory;
-import org.jboss.ejb3.proxy.factory.stateful.BaseStatefulRemoteProxyFactory;
-import org.jboss.ejb3.proxy.factory.stateful.StatefulClusterProxyFactory;
+import org.jboss.ejb3.proxy.factory.session.stateful.StatefulSessionRemoteProxyFactory;
 import org.jboss.ejb3.proxy.factory.stateful.StatefulLocalProxyFactory;
 import org.jboss.ejb3.proxy.factory.stateful.StatefulRemoteProxyFactory;
 import org.jboss.ejb3.proxy.impl.EJBMetaDataImpl;
@@ -191,8 +195,8 @@
 
    public Object createProxyRemoteEjb21(Object id, RemoteBinding binding, String businessInterfaceType) throws Exception
    { 
-      BaseStatefulRemoteProxyFactory proxyFactory = this.getProxyFactory(binding);
-      return proxyFactory.createProxyEjb21(id, businessInterfaceType);
+      StatefulSessionProxyFactory proxyFactory = this.getProxyFactory(binding);
+      return proxyFactory.createProxyEjb2x((Serializable)id);
    }
    
    public Object createProxyLocalEjb21(Object id, String businessInterfaceType) throws Exception
@@ -216,34 +220,46 @@
    }
    
    @Override
-   protected BaseStatefulRemoteProxyFactory getProxyFactory(RemoteBinding binding)
+   protected StatefulSessionProxyFactory getProxyFactory(RemoteBinding binding)
    {
-      BaseStatefulRemoteProxyFactory factory = (BaseStatefulRemoteProxyFactory) this.proxyDeployer
-            .getProxyFactory(binding);
+      //TODO Should be obtained from JNDI Registrar, needs to be looked up by a @RemoteBinding key
 
-      if (factory == null)
+      /*
+       * In this implementation we just make a new Proxy Factory, for now
+       */
+
+      // Initialize
+      StatefulSessionProxyFactory factory = null;
+
+      // If Clustered
+      if (this.isAnnotationPresent(Clustered.class))
       {
+         // Get the Proxy Clustering Registry
+         Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
+         String mcName = ClusteredObjectStoreBindings.CLUSTERED_OBJECTSTORE_BEAN_NAME_PROXY_CLUSTERING_REGISTRY;
+         ProxyClusteringRegistry registry = (ProxyClusteringRegistry) registrar.lookup(mcName);
+         assert registry != null : "Could not find " + ProxyClusteringRegistry.class.getSimpleName() + " in the "
+               + Ejb3Registrar.class.getSimpleName() + " under name " + mcName;
+         factory = new StatefulSessionClusteredProxyFactory(this.getName(), this.getName(), Ejb3Registry.guid(this),
+               this.getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor(), registry);
+      }
+      else
+      {
+         factory = new StatefulSessionRemoteProxyFactory(this.getName(), this.getName(), Ejb3Registry.guid(this), this
+               .getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor());
+      }
 
-         Clustered clustered = getAnnotation(Clustered.class);
-         if (clustered != null)
-         {
-            factory = new StatefulClusterProxyFactory(this, binding, clustered);
-         }
-         else
-         {
-            factory = new StatefulRemoteProxyFactory(this, binding);
-         }
-         
-         try
-         {
-            factory.init();
-         }
-         catch(Exception e)
-         {
-            throw new RuntimeException(e);
-         }
+      // Start the Factory
+      try
+      {
+         factory.start();
       }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Could not start " + factory, e);
+      }
 
+      // Return
       return factory;
    }
    

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-10-03 08:53:33 UTC (rev 79055)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-10-03 08:56:18 UTC (rev 79056)
@@ -31,6 +31,7 @@
 
 import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
+import javax.ejb.EJBLocalObject;
 import javax.ejb.EJBObject;
 import javax.ejb.Handle;
 import javax.ejb.Timer;
@@ -50,24 +51,32 @@
 import org.jboss.ejb3.BeanContextLifecycleCallback;
 import org.jboss.ejb3.EJBContainerInvocation;
 import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.Ejb3Registry;
 import org.jboss.ejb3.annotation.Clustered;
 import org.jboss.ejb3.annotation.LocalBinding;
 import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.ejb3.cache.ClusteredStatefulCache;
 import org.jboss.ejb3.common.lang.SerializableMethod;
+import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
+import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.proxy.ProxyUtils;
+import org.jboss.ejb3.proxy.clustered.factory.session.stateless.StatelessSessionClusteredProxyFactory;
 import org.jboss.ejb3.proxy.clustered.objectstore.ClusteredObjectStoreBindings;
+import org.jboss.ejb3.proxy.clustered.registry.ProxyClusteringRegistry;
 import org.jboss.ejb3.proxy.container.InvokableContext;
 import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
-import org.jboss.ejb3.proxy.factory.SessionProxyFactory;
+import org.jboss.ejb3.proxy.factory.session.SessionProxyFactory;
+import org.jboss.ejb3.proxy.factory.session.stateless.StatelessSessionProxyFactoryBase;
+import org.jboss.ejb3.proxy.factory.session.stateless.StatelessSessionRemoteProxyFactory;
 import org.jboss.ejb3.proxy.factory.stateless.BaseStatelessRemoteProxyFactory;
 import org.jboss.ejb3.proxy.factory.stateless.StatelessClusterProxyFactory;
 import org.jboss.ejb3.proxy.factory.stateless.StatelessLocalProxyFactory;
 import org.jboss.ejb3.proxy.factory.stateless.StatelessRemoteProxyFactory;
+import org.jboss.ejb3.proxy.jndiregistrar.JndiSessionRegistrarBase;
 import org.jboss.ejb3.proxy.objectstore.ObjectStoreBindings;
 import org.jboss.ejb3.proxy.remoting.SessionSpecRemotingMetadata;
 import org.jboss.ejb3.session.SessionContainer;
 import org.jboss.ejb3.session.SessionSpecContainer;
-import org.jboss.ejb3.stateful.StatefulRemoteInvocation;
 import org.jboss.ejb3.timerservice.TimedObjectInvoker;
 import org.jboss.ejb3.timerservice.TimerServiceFactory;
 import org.jboss.injection.WebServiceContextProxy;
@@ -136,29 +145,46 @@
    }
    
    @Override
-   protected BaseStatelessRemoteProxyFactory getProxyFactory(RemoteBinding binding)
+   protected SessionProxyFactory getProxyFactory(RemoteBinding binding)
    {
-      BaseStatelessRemoteProxyFactory factory = (BaseStatelessRemoteProxyFactory) this.proxyDeployer
-            .getProxyFactory(binding);
+      //TODO Should be obtained from JNDI Registrar, needs to be looked up by a @RemoteBinding key
 
-      if (factory == null)
+      /*
+       * In this implementation we just make a new Proxy Factory, for now
+       */
+
+      // Initialize
+      SessionProxyFactory factory = null;
+
+      // If Clustered
+      if (this.isAnnotationPresent(Clustered.class))
       {
-         Clustered clustered = getAnnotation(Clustered.class);
-         if (clustered != null)
-            factory = new StatelessClusterProxyFactory(this, binding, clustered);
-         else
-            factory = new StatelessRemoteProxyFactory(this, binding);
-         
-         try
-         {
-            factory.init();
-         }
-         catch (Exception e)
-         {
-            throw new RuntimeException(e);
-         }
+         // Get the Proxy Clustering Registry
+         Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
+         String mcName = ClusteredObjectStoreBindings.CLUSTERED_OBJECTSTORE_BEAN_NAME_PROXY_CLUSTERING_REGISTRY;
+         ProxyClusteringRegistry registry = (ProxyClusteringRegistry) registrar.lookup(mcName);
+         assert registry != null : "Could not find " + ProxyClusteringRegistry.class.getSimpleName() + " in the "
+               + Ejb3Registrar.class.getSimpleName() + " under name " + mcName;
+         factory = new StatelessSessionClusteredProxyFactory(this.getName(), this.getName(), Ejb3Registry.guid(this),
+               this.getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor(), registry);
       }
+      else
+      {
+         factory = new StatelessSessionRemoteProxyFactory(this.getName(), this.getName(), Ejb3Registry.guid(this), this
+               .getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor());
+      }
 
+      // Start the factory
+      try
+      {
+         factory.start();
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Error in starting " + factory, e);
+      }
+
+      // Return
       return factory;
    }
    
@@ -180,8 +206,8 @@
    @Override
    public Object createProxyRemoteEjb21(RemoteBinding binding, String businessInterfaceType) throws Exception
    {
-      BaseStatelessRemoteProxyFactory proxyFactory = this.getProxyFactory(binding);
-      return proxyFactory.createProxyEjb21(businessInterfaceType);
+      SessionProxyFactory proxyFactory = this.getProxyFactory(binding);
+      return proxyFactory.createProxyEjb2x();
    }
    
    public Serializable createSession(Class<?> initTypes[], Object initArgs[])
@@ -573,12 +599,26 @@
       Method unadvisedMethod = info.getUnadvisedMethod();
       if (unadvisedMethod.getName().equals("getHandle"))
       {
-         
-         StatelessHandleRemoteImpl handle = null;
-         RemoteBinding binding = this.getAnnotation(RemoteBinding.class);
-         BaseStatelessRemoteProxyFactory factory = this.getProxyFactory(binding);
-         handle = factory.createHandle();
+         // Get JNDI Registrar
+         JndiSessionRegistrarBase slsbJndiRegistrar = this.getJndiRegistrar();
 
+         // Determine if local/remote
+         boolean isLocal = EJBLocalObject.class.isAssignableFrom(unadvisedMethod.getDeclaringClass());
+
+         // Find the Proxy Factory Key for this SLSB
+         String proxyFactoryKey = slsbJndiRegistrar.getProxyFactoryRegistryKey(this.getMetaData(), isLocal);
+
+         // Lookup the Proxy Factory in the Object Store
+         StatelessSessionProxyFactoryBase proxyFactory = Ejb3RegistrarLocator.locateRegistrar().lookup(proxyFactoryKey,
+               StatelessSessionProxyFactoryBase.class);
+
+         // Create a new EJB2.x Proxy
+         EJBObject proxy = (EJBObject) proxyFactory.createProxyEjb2x();
+
+         // Create a Handle
+         StatelessHandleRemoteImpl handle = new StatelessHandleRemoteImpl(proxy);
+
+         // Return
          return handle;
       }
       else if (unadvisedMethod.getName().equals("remove"))
@@ -635,11 +675,11 @@
       Method unadvisedMethod = info.getUnadvisedMethod();
       if (unadvisedMethod.getName().equals("create"))
       {
-         RemoteBinding binding = this.getRemoteBinding();
-
-         BaseStatelessRemoteProxyFactory factory = this.getProxyFactory(binding);
-
-         return factory.createProxyEjb21(unadvisedMethod.getReturnType().getName());
+         SerializableMethod method = new SerializableMethod(unadvisedMethod);
+         Object[] arguments = invocation.getArguments();
+         // EJBTHREE-1512 Pass along the request to the proper home create method
+         Object proxy = this.invokeHomeCreate(method, arguments);
+         return proxy;
       }
       else
       // remove




More information about the jboss-cvs-commits mailing list