[jboss-cvs] JBossAS SVN: r79294 - in projects/ejb3/trunk: core/src/main/java/org/jboss/ejb3/stateless and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Oct 9 03:18:08 EDT 2008
Author: ALRubinger
Date: 2008-10-09 03:18:08 -0400 (Thu, 09 Oct 2008)
New Revision: 79294
Modified:
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
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/StatelessSessionRemoteProxyFactory.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/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
Log:
[EJBTHREE-1517] Added support for @RemoteBinding.interceptorStack
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-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -246,7 +246,7 @@
else
{
factory = new StatefulSessionRemoteProxyFactory(this.getName(), this.getName(), Ejb3Registry.guid(this), this
- .getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor());
+ .getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor(), null);
}
// Start the 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-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -168,7 +168,7 @@
else
{
factory = new StatelessSessionRemoteProxyFactory(this.getName(), this.getName(), Ejb3Registry.guid(this), this
- .getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor());
+ .getMetaData(), this.getClassloader(), binding.clientBindUrl(), this.getAdvisor(), null);
}
// Start the factory
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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateful/StatefulSessionRemoteProxyFactory.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -47,7 +47,7 @@
private static final Logger log = Logger.getLogger(StatefulSessionRemoteProxyFactory.class);
- private static final String STACK_NAME_STATEFUL_SESSION_CLIENT_INTERCEPTORS = "StatefulSessionClientInterceptors";
+ private static final String DEFAULT_STACK_NAME_STATEFUL_SESSION_CLIENT_INTERCEPTORS = "StatefulSessionClientInterceptors";
// --------------------------------------------------------------------------------||
// Instance Members ---------------------------------------------------------------||
@@ -58,6 +58,11 @@
*/
private String url;
+ /**
+ * Name of the interceptor stack to use (overrides the default)
+ */
+ private String interceptorStackName;
+
// --------------------------------------------------------------------------------||
// Constructor --------------------------------------------------------------------||
// --------------------------------------------------------------------------------||
@@ -74,13 +79,17 @@
* for which this ProxyFactory is to generate Proxies
* @param url The URL to use for remoting
* @param advisor The Advisor for proxies created by this factory
+ * @param interceptorStackName The name of the client-side interceptor stack to use.
+ * If null the default will apply.
*/
public StatefulSessionRemoteProxyFactory(final String name, final String containerName, final String containerGuid,
- final JBossSessionBeanMetaData metadata, final ClassLoader classloader, final String url, final Advisor advisor)
+ final JBossSessionBeanMetaData metadata, final ClassLoader classloader, final String url,
+ final Advisor advisor, final String interceptorStackName)
{
// Call Super
super(name, containerName, containerGuid, metadata, classloader, advisor);
this.setUrl(url);
+ this.setInterceptorStackName(interceptorStackName);
}
// --------------------------------------------------------------------------------||
@@ -128,7 +137,18 @@
@Override
protected String getInterceptorStackName()
{
- return StatefulSessionRemoteProxyFactory.STACK_NAME_STATEFUL_SESSION_CLIENT_INTERCEPTORS;
+ // Initialize to default
+ String stackName = StatefulSessionRemoteProxyFactory.DEFAULT_STACK_NAME_STATEFUL_SESSION_CLIENT_INTERCEPTORS;
+
+ // Override if specified
+ String overrideName = this.interceptorStackName;
+ if (overrideName != null && overrideName.trim().length() > 0)
+ {
+ stackName = overrideName;
+ }
+
+ // Return
+ return stackName;
}
// --------------------------------------------------------------------------------||
@@ -153,7 +173,7 @@
// Return
return handler;
}
-
+
@Override
protected SessionProxyInvocationHandler createBusinessDefaultInvocationHandler()
{
@@ -185,4 +205,9 @@
{
this.url = url;
}
+
+ protected void setInterceptorStackName(String interceptorStackName)
+ {
+ this.interceptorStackName = interceptorStackName;
+ }
}
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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/factory/session/stateless/StatelessSessionRemoteProxyFactory.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -47,7 +47,7 @@
private static final Logger logger = Logger.getLogger(StatelessSessionRemoteProxyFactory.class);
- private static final String STACK_NAME_STATELESS_SESSION_CLIENT_INTERCEPTORS = "StatelessSessionClientInterceptors";
+ private static final String DEFAULT_STACK_NAME_STATELESS_SESSION_CLIENT_INTERCEPTORS = "StatelessSessionClientInterceptors";
// --------------------------------------------------------------------------------||
// Instance Members ---------------------------------------------------------------||
@@ -58,6 +58,11 @@
*/
private String url;
+ /**
+ * Name of the interceptor stack to use (overrides the default)
+ */
+ private String interceptorStackName;
+
// --------------------------------------------------------------------------------||
// Constructor --------------------------------------------------------------------||
// --------------------------------------------------------------------------------||
@@ -74,13 +79,19 @@
* for which this ProxyFactory is to generate Proxies
* @param url The URL to use for remoting
* @param advisor The Advisor for proxies created by this factory
+ * @param interceptorStackName The name of the client-side interceptor stack to use.
+ * If null the default will apply.
*/
public StatelessSessionRemoteProxyFactory(final String name, final String containerName, final String containerGuid,
- final JBossSessionBeanMetaData metadata, final ClassLoader classloader, final String url, final Advisor advisor)
+ final JBossSessionBeanMetaData metadata, final ClassLoader classloader, final String url,
+ final Advisor advisor, final String interceptorStackName)
{
// Call Super
super(name, containerName, containerGuid, metadata, classloader, advisor);
+
+ // Set properties
this.setUrl(url);
+ this.setInterceptorStackName(interceptorStackName);
}
// --------------------------------------------------------------------------------||
@@ -128,7 +139,18 @@
@Override
protected String getInterceptorStackName()
{
- return StatelessSessionRemoteProxyFactory.STACK_NAME_STATELESS_SESSION_CLIENT_INTERCEPTORS;
+ // Initialize to default
+ String stackName = StatelessSessionRemoteProxyFactory.DEFAULT_STACK_NAME_STATELESS_SESSION_CLIENT_INTERCEPTORS;
+
+ // Override if specified
+ String overrideName = this.interceptorStackName;
+ if (overrideName != null && overrideName.trim().length() > 0)
+ {
+ stackName = overrideName;
+ }
+
+ // Return
+ return stackName;
}
// --------------------------------------------------------------------------------||
@@ -153,7 +175,7 @@
// Return
return handler;
}
-
+
@Override
protected SessionProxyInvocationHandler createBusinessDefaultInvocationHandler()
{
@@ -185,4 +207,9 @@
{
this.url = url;
}
+
+ protected void setInterceptorStackName(String interceptorStackName)
+ {
+ this.interceptorStackName = interceptorStackName;
+ }
}
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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiSessionRegistrarBase.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -197,17 +197,17 @@
/*
* Bind Remote ObjectFactories to JNDI
*/
-
+
// If there's a remote view
if (hasRemoteView)
{
// Initialize a default clientBindUrl
String defaultClientBindUrl = ProxyRemotingUtils.getDefaultClientBinding();
-
+
/*
* Create reference addresses for remote bindings
*/
-
+
// Initialize Reference Addresses to attach to remote JNDI References
List<RefAddr> refAddrsForRemote = new ArrayList<RefAddr>();
@@ -225,34 +225,34 @@
/*
* Set up default remote binding
*/
-
+
// Get the default remote JNDI Name
String defaultRemoteJndiName = smd.getJndiName();
-
+
// Create and register a remote proxy factory
String defaultRemoteProxyFactoryKey = this.getProxyFactoryRegistryKey(defaultRemoteJndiName);
SessionProxyFactory factory = this.createRemoteProxyFactory(defaultRemoteProxyFactoryKey, containerName,
- containerGuid, smd, cl, defaultClientBindUrl, advisor);
+ containerGuid, smd, cl, defaultClientBindUrl, advisor, null);
try
{
this.registerProxyFactory(defaultRemoteProxyFactoryKey, factory, smd);
}
- catch(DuplicateBindException dbe)
+ catch (DuplicateBindException dbe)
{
throw new RuntimeException(dbe);
}
-
+
// Get Classname to set for Reference
String defaultRemoteClassName = this.getHumanReadableListOfInterfacesInRefAddrs(refAddrsForRemote);
// Create a Reference
Reference defaultRemoteRef = createStandardReference(JndiSessionRegistrarBase.OBJECT_FACTORY_CLASSNAME_PREFIX
+ defaultRemoteClassName, defaultRemoteProxyFactoryKey, containerName, false);
-
+
/*
* Set up references for Home
*/
-
+
// Determine if remote home and business remotes are bound to same JNDI Address
boolean bindRemoteAndHomeTogether = this.isHomeAndBusinessBoundTogether(smd, false);
if (bindRemoteAndHomeTogether)
@@ -283,26 +283,26 @@
bindingSet.addHomeRemoteBinding(new JndiReferenceBinding(homeAddress, homeRef));
}
-
+
/*
* If no @RemoteBindings are defined, make a default remote binding
*/
-
+
// Get RemoteBindings
List<RemoteBindingMetaData> remoteBindings = smd.getRemoteBindings();
-
+
// If there are no @RemoteBindings defined
- if(remoteBindings==null)
+ if (remoteBindings == null)
{
// Use the default Client Bind URL
String clientBindUrl = defaultClientBindUrl;
-
+
// Create a default remote remoting RefAddr, using the default (as none was explicitly-specified)
RefAddr defaultRemoteRemotingRefAddr = this.createRemotingRefAddr(clientBindUrl);
-
+
// Add a Reference Address for the Remoting URL
refAddrsForRemote.add(defaultRemoteRemotingRefAddr);
-
+
/*
* Bind ObjectFactory for default remote businesses (and home if bound together)
*/
@@ -320,7 +320,7 @@
log.debug("Default Remote Business View for EJB " + smd.getEjbName() + " to be bound into JNDI at \""
+ defaultRemoteJndiName + "\"");
bindingSet.addDefaultRemoteBinding(new JndiReferenceBinding(defaultRemoteJndiName, defaultRemoteRef));
-
+
}
// Remote Bindings are defined, create a binding for each
else
@@ -328,7 +328,7 @@
/*
* Bind all explicitly-declared remote bindings
*/
-
+
// For each of the explicitly-defined @RemoteBindings
for (RemoteBindingMetaData binding : remoteBindings)
{
@@ -346,10 +346,13 @@
clientBindUrl = remoteBindingClientBindUrl;
}
+ // Get the interceptor stack
+ String interceptorStack = binding.getInterceptorStack();
+
/*
* Obtain a Proxy Factory for this Binding
*/
-
+
// Create and register a remote proxy factory specific to this binding
String remoteBindingProxyFactoryKey = this.getProxyFactoryRegistryKey(remoteBindingJndiName);
SessionProxyFactory remoteBindingProxyFactory = null;
@@ -373,7 +376,7 @@
// Create the Proxy Factory
remoteBindingProxyFactory = this.createRemoteProxyFactory(remoteBindingProxyFactoryKey,
- containerName, containerGuid, smd, cl, clientBindUrl, advisor);
+ containerName, containerGuid, smd, cl, clientBindUrl, advisor, interceptorStack);
try
{
this.registerProxyFactory(remoteBindingProxyFactoryKey, remoteBindingProxyFactory, smd);
@@ -382,7 +385,7 @@
{
throw new RuntimeException(dbe);
}
-
+
// Create a default remote remoting RefAddr, using the default (as none was explicitly-specified)
RefAddr remoteBindingRemotingRefAddr = this.createRemotingRefAddr(clientBindUrl);
@@ -390,13 +393,13 @@
Reference remoteBindingRef = createStandardReference(
JndiSessionRegistrarBase.OBJECT_FACTORY_CLASSNAME_PREFIX + defaultRemoteClassName,
remoteBindingProxyFactoryKey, containerName, false);
-
+
// Add a Reference Address for the Remoting URL
log.debug("Adding " + RefAddr.class.getSimpleName() + " to @RemoteBinding "
- + Reference.class.getSimpleName() + ": Type \"" + remoteBindingRemotingRefAddr.getType() + "\", Content \""
- + remoteBindingRemotingRefAddr.getContent() + "\"");
+ + Reference.class.getSimpleName() + ": Type \"" + remoteBindingRemotingRefAddr.getType()
+ + "\", Content \"" + remoteBindingRemotingRefAddr.getContent() + "\"");
remoteBindingRef.add(remoteBindingRemotingRefAddr);
-
+
// Add all Reference Addresses for @RemoteBinding Reference
for (RefAddr refAddr : refAddrsForRemote)
{
@@ -407,7 +410,8 @@
}
// Create the binding
- JndiReferenceBinding remoteBindingJndiBinding = new JndiReferenceBinding(remoteBindingJndiName, remoteBindingRef);
+ JndiReferenceBinding remoteBindingJndiBinding = new JndiReferenceBinding(remoteBindingJndiName,
+ remoteBindingRef);
// Add the binding
bindingSet.addDefaultRemoteBinding(remoteBindingJndiBinding);
@@ -441,7 +445,7 @@
{
// Get the default local JNDI Name
String defaultLocalJndiName = smd.getLocalJndiName();
-
+
// Create and register a local proxy factory
String localProxyFactoryKey = this.getProxyFactoryRegistryKey(defaultLocalJndiName);
SessionProxyFactory factory = this.createLocalProxyFactory(localProxyFactoryKey, containerName, containerGuid,
@@ -450,7 +454,7 @@
{
this.registerProxyFactory(localProxyFactoryKey, factory, smd);
}
- catch(DuplicateBindException dbe)
+ catch (DuplicateBindException dbe)
{
throw new RuntimeException(dbe);
}
@@ -586,7 +590,7 @@
{
// Obtain RemoteBinding URL
List<RemoteBindingMetaData> remoteBindings = smd.getRemoteBindings();
-
+
// Get Default Remote JNDI Name
String defaultRemoteJndiName = smd.getJndiName();
@@ -613,7 +617,7 @@
log.debug("Default Remote Business View for EJB " + smd.getEjbName() + " to be unbound from JNDI at \""
+ defaultRemoteJndiName + "\"");
this.unbind(context, defaultRemoteJndiName);
-
+
// Unbind all @RemoteBinding.jndiBindings
if (remoteBindings != null)
{
@@ -719,10 +723,12 @@
* @param cl The ClassLoader for this EJB Container
* @param url The URL to use for Remoting
* @param advisor The Advisor for proxies created by this factory
+ * @param interceptorStackName The name of the client-side interceptor stack to use.
+ * If null the default will apply.
*/
protected abstract SessionProxyFactory createRemoteProxyFactory(final String name, final String containerName,
final String containerGuid, final JBossSessionBeanMetaData smd, final ClassLoader cl, final String url,
- final Advisor advisor);
+ final Advisor advisor, final String interceptorStackName);
// --------------------------------------------------------------------------------||
// Helper Methods -----------------------------------------------------------------||
@@ -1063,7 +1069,7 @@
{
Ejb3RegistrarLocator.locateRegistrar().unbind(name);
}
- catch(NotBoundException nbe)
+ catch (NotBoundException nbe)
{
// Swallow, already deregistered
}
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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatefulSessionRegistrar.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -96,15 +96,17 @@
* @param cl The ClassLoader for this EJB Container
* @param url The URL to use for Remoting
* @param advisor The Advisor for proxies created by this factory
+ * @param interceptorStackName The name of the client-side interceptor stack to use.
+ * If null the default will apply.
*/
@Override
protected SessionProxyFactory createRemoteProxyFactory(final String name, final String containerName,
final String containerGuid, final JBossSessionBeanMetaData smd, final ClassLoader cl, final String url,
- final Advisor advisor)
+ final Advisor advisor, final String interceptorStackName)
{
// Create
SessionProxyFactory factory = new StatefulSessionRemoteProxyFactory(name, containerName, containerGuid, smd, cl,
- url, advisor);
+ url, advisor, interceptorStackName);
// Register with Remoting
log.debug("Registering with Remoting Dispatcher under name \"" + factory.getName() + "\": " + 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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/jndiregistrar/JndiStatelessSessionRegistrar.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -96,15 +96,17 @@
* @param cl The ClassLoader for this EJB Container
* @param url The URL to use for Remoting
* @param advisor The Advisor for proxies created by this factory
+ * @param interceptorStackName The name of the client-side interceptor stack to use.
+ * If null the default will apply.
*/
@Override
protected SessionProxyFactory createRemoteProxyFactory(final String name, final String containerName,
final String containerGuid, final JBossSessionBeanMetaData smd, final ClassLoader cl, final String url,
- final Advisor advisor)
+ final Advisor advisor, final String interceptorStackName)
{
// Create
SessionProxyFactory factory = new StatelessSessionRemoteProxyFactory(name, containerName, containerGuid, smd, cl,
- url, advisor);
+ url, advisor, interceptorStackName);
// Register with Remoting
log.debug("Registering with Remoting Dispatcher under name \"" + factory.getName() + "\": " + factory);
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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SfsbProxyEqualityTestCase.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -229,7 +229,7 @@
// Make a Remote Proxy Factory
StatefulSessionRemoteProxyFactory factory = new StatefulSessionRemoteProxyFactory(
StatefulSessionRemoteProxyFactory.class.getName(), sfsb.getName(), sfsb.getName(), sfsb.getMetaData(), sfsb
- .getClassLoader(), "socket://localhost:3874", ProxyEqualityTestCaseBase.advisor);
+ .getClassLoader(), "socket://localhost:3874", ProxyEqualityTestCaseBase.advisor, null);
// 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-10-09 07:14:45 UTC (rev 79293)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/spec_3_4_5/unit/SlsbProxyEqualityTestCase.java 2008-10-09 07:18:08 UTC (rev 79294)
@@ -176,7 +176,7 @@
// Create the Factory
StatelessSessionRemoteProxyFactory factory = new StatelessSessionRemoteProxyFactory(
StatelessSessionRemoteProxyFactory.class.getName(), container.getName(), container.getName(), container
- .getMetaData(), container.getClassLoader(), null, ProxyEqualityTestCaseBase.advisor);
+ .getMetaData(), container.getClassLoader(), null, ProxyEqualityTestCaseBase.advisor, null);
// Start
factory.start();
More information about the jboss-cvs-commits
mailing list