[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