public abstract class

AbstractSlsbInvokerInterceptor

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

Class Overview

Base class for AOP interceptors invoking local or 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 direct target object: The call is handled in a special way, getting executed on an EJB instance retrieved via an EJB home.

Summary

[Expand]
Inherited Constants
From class org.springframework.jndi.JndiLocatorSupport
[Expand]
Inherited Fields
From class org.springframework.jndi.JndiAccessor
Public Constructors
AbstractSlsbInvokerInterceptor()
Public Methods
void afterPropertiesSet()
Fetches EJB home on startup, if necessary.
Object invoke(MethodInvocation invocation)
Prepares the thread context if necessar, and delegates to invokeInContext(MethodInvocation).
void setCacheHome(boolean cacheHome)
Set whether to cache the EJB home object once it has been located.
void setExposeAccessContext(boolean exposeAccessContext)
Set whether to expose the JNDI environment context for all access to the target EJB, i.e.
void setLookupHomeOnStartup(boolean lookupHomeOnStartup)
Set whether to look up the EJB home object on startup.
Protected Methods
Object create()
Invokes the create() method on the cached EJB home object.
Method getCreateMethod(Object home)
Determine the create method of the given EJB home object.
Object getHome()
Return the EJB home object to use.
abstract Object invokeInContext(MethodInvocation invocation)
Perform the given invocation on the current EJB home, within the thread context being prepared accordingly.
boolean isHomeRefreshable()
Return whether the cached EJB home object is potentially subject to on-demand refreshing.
void refreshHome()
Refresh the cached home object, if applicable.
[Expand]
Inherited Methods
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 AbstractSlsbInvokerInterceptor ()

Public Methods

public void afterPropertiesSet ()

Fetches EJB home on startup, if necessary.

public Object invoke (MethodInvocation invocation)

Prepares the thread context if necessar, and delegates to invokeInContext(MethodInvocation).

Throws
Throwable

public void setCacheHome (boolean cacheHome)

Set whether to cache the EJB home object once it has been located. Default is "true".

Can be turned off to allow for hot restart of the EJB server. In this case, the EJB home object will be fetched for each invocation.

public void setExposeAccessContext (boolean exposeAccessContext)

Set whether to expose the JNDI environment context for all access to the target EJB, i.e. for all method invocations on the exposed object reference.

Default is "false", i.e. to only expose the JNDI context for object lookup. Switch this flag to "true" in order to expose the JNDI environment (including the authorization context) for each EJB invocation, as needed by WebLogic for EJBs with authorization requirements.

public void setLookupHomeOnStartup (boolean lookupHomeOnStartup)

Set whether to look up the EJB home object on startup. Default is "true".

Can be turned off to allow for late start of the EJB server. In this case, the EJB home object will be fetched on first access.

Protected Methods

protected Object create ()

Invokes the create() method on the cached EJB home object.

Returns
  • a new EJBObject or EJBLocalObject
Throws
NamingException if thrown by JNDI
InvocationTargetException if thrown by the create method

protected Method getCreateMethod (Object home)

Determine the create method of the given EJB home object.

Parameters
home the EJB home object
Returns
  • the create method
Throws
EjbAccessException if the method couldn't be retrieved

protected Object getHome ()

Return the EJB home object to use. Called for each invocation.

Default implementation returns the home created on initialization, if any; else, it invokes lookup to get a new proxy for each invocation.

Can be overridden in subclasses, for example to cache a home object for a given amount of time before recreating it, or to test the home object whether it is still alive.

Returns
  • the EJB home object to use for an invocation
Throws
NamingException if proxy creation failed

protected abstract Object invokeInContext (MethodInvocation invocation)

Perform the given invocation on the current EJB home, within the thread context being prepared accordingly. 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 boolean isHomeRefreshable ()

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

protected void refreshHome ()

Refresh the cached home object, if applicable. Also caches the create method on the home object.

Throws
NamingException if thrown by the JNDI lookup