[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