public class

LocalSlsbInvokerInterceptor

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.LocalSlsbInvokerInterceptor
Known Direct Subclasses

Class Overview

Invoker for a local Stateless Session Bean. Designed for EJB 2.x, but works for EJB 3 Session Beans as well.

Caches the home object, since a local EJB home can never go stale. See JndiObjectLocator for info on how to specify the JNDI location of the target EJB.

In a bean container, this class is normally best used as a singleton. However, if that bean container pre-instantiates singletons (as do the XML ApplicationContext variants) you may have a problem if the bean container is loaded before the EJB container loads the target EJB. That is because by default the JNDI lookup will be performed in the init method of this class and cached, but the EJB will not have been bound at the target location yet. The best solution is to set the lookupHomeOnStartup property to false, in which case the home will be fetched on first access to the EJB. (This flag is only true by default for backwards compatibility reasons).

Summary

[Expand]
Inherited Constants
From class org.springframework.jndi.JndiLocatorSupport
[Expand]
Inherited Fields
From class org.springframework.jndi.JndiAccessor
Public Constructors
LocalSlsbInvokerInterceptor()
Public Methods
Object invokeInContext(MethodInvocation invocation)
This implementation "creates" a new EJB instance for each invocation.
Protected Methods
Method getCreateMethod(Object home)
Check for EJB3-style home object that serves as EJB component directly.
Object getSessionBeanInstance()
Return an EJB instance to delegate the call to.
Object newSessionBeanInstance()
Return a new instance of the stateless session bean.
void releaseSessionBeanInstance(EJBLocalObject ejb)
Release the given EJB instance.
void removeSessionBeanInstance(EJBLocalObject 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 LocalSlsbInvokerInterceptor ()

Public Methods

public Object invokeInContext (MethodInvocation invocation)

This implementation "creates" a new EJB instance for each invocation. Can be overridden for custom invocation strategies.

Alternatively, override getSessionBeanInstance() and releaseSessionBeanInstance(EJBLocalObject) to change EJB instance creation, for example to hold a single shared EJB instance.

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

Protected Methods

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 Object getSessionBeanInstance ()

Return an EJB instance to delegate the call to. Default implementation delegates to newSessionBeanInstance.

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

protected Object newSessionBeanInstance ()

Return a new instance of the stateless session bean. Can be overridden to change the algorithm.

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

protected void releaseSessionBeanInstance (EJBLocalObject ejb)

Release the given EJB instance. Default implementation delegates to removeSessionBeanInstance.

Parameters
ejb the EJB instance to release

protected void removeSessionBeanInstance (EJBLocalObject ejb)

Remove the given EJB instance.

Parameters
ejb the EJB instance to remove
See Also