Save This Page
Home » spring-framework-2.5.5-with-dependencies » org.springframework.ejb » access » [javadoc | source]
org.springframework.ejb.access
public class: LocalSlsbInvokerInterceptor [javadoc | source]
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

All Implemented Interfaces:
    org.aopalliance.intercept.MethodInterceptor, InitializingBean

Direct Known Subclasses:
    LocalStatelessSessionProxyFactoryBean

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 org.springframework.jndi.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).

Fields inherited from org.springframework.jndi.JndiLocatorSupport:
CONTAINER_PREFIX
Fields inherited from org.springframework.jndi.JndiAccessor:
logger
Method from org.springframework.ejb.access.LocalSlsbInvokerInterceptor Summary:
getCreateMethod,   getSessionBeanInstance,   invokeInContext,   newSessionBeanInstance,   releaseSessionBeanInstance,   removeSessionBeanInstance
Methods from org.springframework.ejb.access.AbstractSlsbInvokerInterceptor:
afterPropertiesSet,   create,   getCreateMethod,   getHome,   invoke,   invokeInContext,   isHomeRefreshable,   refreshHome,   setCacheHome,   setExposeAccessContext,   setLookupHomeOnStartup
Methods from org.springframework.jndi.JndiObjectLocator:
afterPropertiesSet,   getExpectedType,   getJndiName,   lookup,   setExpectedType,   setJndiName
Methods from org.springframework.jndi.JndiLocatorSupport:
convertJndiName,   isResourceRef,   lookup,   lookup,   setResourceRef
Methods from org.springframework.jndi.JndiAccessor:
getJndiEnvironment,   getJndiTemplate,   setJndiEnvironment,   setJndiTemplate
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.springframework.ejb.access.LocalSlsbInvokerInterceptor Detail:
 protected Method getCreateMethod(Object home) throws EjbAccessException 
    Check for EJB3-style home object that serves as EJB component directly.
 protected Object getSessionBeanInstance() throws NamingException, InvocationTargetException 
    Return an EJB instance to delegate the call to. Default implementation delegates to newSessionBeanInstance.
 public Object invokeInContext(MethodInvocation invocation) throws Throwable 
    This implementation "creates" a new EJB instance for each invocation. Can be overridden for custom invocation strategies.

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

 protected Object newSessionBeanInstance() throws NamingException, InvocationTargetException 
    Return a new instance of the stateless session bean. Can be overridden to change the algorithm.
 protected  void releaseSessionBeanInstance(EJBLocalObject ejb) 
    Release the given EJB instance. Default implementation delegates to removeSessionBeanInstance.
 protected  void removeSessionBeanInstance(EJBLocalObject ejb) 
    Remove the given EJB instance.