public abstract class

AbstractRemoteSlsbInvokerInterceptor

extends AbstractSlsbInvokerInterceptor
java.lang.Object
   ↳ org.springframework.jndi.JndiAccessor
     ↳ org.springframework.jndi.JndiLocatorSupport
       ↳ org.springframework.jndi.JndiObjectLocator
         ↳ org.springframework.ejb.access.AbstractSlsbInvokerInterceptor
           ↳ org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Base class for interceptors proxying remote Stateless Session Beans. Designed for EJB 2.x, but works for EJB 3 Session Beans as well.

Such an interceptor must be the last interceptor in the advice chain. In this case, there is no target object.

Summary

[Expand]
Inherited Constants
From class org.springframework.jndi.JndiLocatorSupport
[Expand]
Inherited Fields
From class org.springframework.jndi.JndiAccessor
Public Constructors
AbstractRemoteSlsbInvokerInterceptor()
Public Methods
Object invokeInContext(MethodInvocation invocation)
Fetches an EJB home object and delegates to doInvoke.
void setHomeInterface(Class homeInterface)
Set a home interface that this invoker will narrow to before performing the parameterless SLSB create() call that returns the actual SLSB proxy.
void setRefreshHomeOnConnectFailure(boolean refreshHomeOnConnectFailure)
Set whether to refresh the EJB home on connect failure.
Protected Methods
abstract Object doInvoke(MethodInvocation invocation)
Perform the given invocation on the current EJB home.
Method getCreateMethod(Object home)
Check for EJB3-style home object that serves as EJB component directly.
boolean isConnectFailure(RemoteException ex)
Determine whether the given RMI exception indicates a connect failure.
boolean isHomeRefreshable()
Return whether the cached EJB home object is potentially subject to on-demand refreshing.
Object lookup()
This overridden lookup implementation performs a narrow operation after the JNDI lookup, provided that a home interface is specified.
Object newSessionBeanInstance()
Return a new instance of the stateless session bean.
Object refreshAndRetry(MethodInvocation invocation)
Refresh the EJB home object and retry the given invocation.
void removeSessionBeanInstance(EJBObject ejb)
Remove the given EJB instance.
[Expand]
Inherited Methods
From class org.springframework.ejb.access.AbstractSlsbInvokerInterceptor
From class org.springframework.jndi.JndiObjectLocator
From class org.springframework.jndi.JndiLocatorSupport
From class org.springframework.jndi.JndiAccessor
From class java.lang.Object
From interface org.springframework.beans.factory.InitializingBean

Public Constructors

public AbstractRemoteSlsbInvokerInterceptor ()

Public Methods

public Object invokeInContext (MethodInvocation invocation)

Fetches an EJB home object and delegates to doInvoke.

If configured to refresh on connect failure, it will call refreshAndRetry(MethodInvocation) on corresponding RMI exceptions.

Parameters
invocation the AOP method invocation
Returns
  • the invocation result, if any
Throws
Throwable

public void setHomeInterface (Class homeInterface)

Set a home interface that this invoker will narrow to before performing the parameterless SLSB create() call that returns the actual SLSB proxy.

Default is none, which will work on all J2EE servers that are not based on CORBA. A plain javax.ejb.EJBHome interface is known to be sufficient to make a WebSphere 5.0 Remote SLSB work. On other servers, the specific home interface for the target SLSB might be necessary.

public void setRefreshHomeOnConnectFailure (boolean refreshHomeOnConnectFailure)

Set whether to refresh the EJB home on connect failure. Default is "false".

Can be turned on to allow for hot restart of the EJB server. If a cached EJB home throws an RMI exception that indicates a remote connect failure, a fresh home will be fetched and the invocation will be retried.

See Also

Protected Methods

protected abstract Object doInvoke (MethodInvocation invocation)

Perform the given invocation on the current EJB home. Template method to be implemented by subclasses.

Parameters
invocation the AOP method invocation
Returns
  • the invocation result, if any
Throws
Throwable in case of invocation failure

protected Method getCreateMethod (Object home)

Check for EJB3-style home object that serves as EJB component directly.

Parameters
home the EJB home object
Returns
  • the create method

protected boolean isConnectFailure (RemoteException ex)

Determine whether the given RMI exception indicates a connect failure.

The default implementation delegates to RmiClientInterceptorUtils.

Parameters
ex the RMI exception to check
Returns
  • whether the exception should be treated as connect failure

protected boolean isHomeRefreshable ()

Return whether the cached EJB home object is potentially subject to on-demand refreshing. Default is "false".

protected Object lookup ()

This overridden lookup implementation performs a narrow operation after the JNDI lookup, provided that a home interface is specified.

Returns
  • the located target object

protected Object newSessionBeanInstance ()

Return a new instance of the stateless session bean. To be invoked by concrete remote SLSB invoker subclasses.

Can be overridden to change the algorithm.

Throws
NamingException if thrown by JNDI
InvocationTargetException if thrown by the create method
See Also

protected Object refreshAndRetry (MethodInvocation invocation)

Refresh the EJB home object and retry the given invocation. Called by invoke on connect failure.

Parameters
invocation the AOP method invocation
Returns
  • the invocation result, if any
Throws
Throwable in case of invocation failure

protected void removeSessionBeanInstance (EJBObject ejb)

Remove the given EJB instance. To be invoked by concrete remote SLSB invoker subclasses.

Parameters
ejb the EJB instance to remove
See Also