Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.ejb.access
Class LocalSlsbInvokerInterceptor

    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:
  Advice, Interceptor, MethodInterceptor, InitializingBean

Direct Known Subclasses:
  LocalStatelessSessionProxyFactoryBean

    public class LocalSlsbInvokerInterceptor

extends AbstractSlsbInvokerInterceptor

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).

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `AbstractSlsbInvokerInterceptor.setLookupHomeOnStartup(boolean)`, `AbstractSlsbInvokerInterceptor.setCacheHome(boolean)`

Field Summary

Fields inherited from class org.springframework.jndi.JndiLocatorSupport
`CONTAINER_PREFIX`

Fields inherited from class org.springframework.jndi.JndiAccessor
`logger`

Constructor Summary
`LocalSlsbInvokerInterceptor()`

Method Summary
`protected Method` | `getCreateMethod(Object home)` Check for EJB3-style home object that serves as EJB component directly.
`protected EJBLocalObject` | `getSessionBeanInstance()` Return an EJB instance to delegate the call to.
`Object` | `invoke(MethodInvocation invocation)` This implementation "creates" a new EJB instance for each invocation.
`protected EJBLocalObject` | `newSessionBeanInstance()` Return a new instance of the stateless session bean.
`protected void` | `releaseSessionBeanInstance(EJBLocalObject ejb)` Release the given EJB instance.
`protected void` | `removeSessionBeanInstance(EJBLocalObject ejb)` Remove the given EJB instance.

Methods inherited from class org.springframework.ejb.access.AbstractSlsbInvokerInterceptor
`afterPropertiesSet, create, getHome, isHomeRefreshable, refreshHome, setCacheHome, setLookupHomeOnStartup`

Methods inherited from class org.springframework.jndi.JndiObjectLocator
`getExpectedType, getJndiName, lookup, setExpectedType, setJndiName`

Methods inherited from class org.springframework.jndi.JndiLocatorSupport
`convertJndiName, isResourceRef, lookup, lookup, setResourceRef`

Methods inherited from class org.springframework.jndi.JndiAccessor
`getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### LocalSlsbInvokerInterceptor

    public LocalSlsbInvokerInterceptor()

Method Detail

### invoke

    public Object invoke(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.

  Throws:
    `Throwable`

### getCreateMethod

    protected Method getCreateMethod(Object home)
                              throws EjbAccessException

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

  Overrides:
    `getCreateMethod` in class `AbstractSlsbInvokerInterceptor`
  Parameters:
    `home` - the EJB home object
  Returns:
    the create method
  Throws:
    `EjbAccessException` - if the method couldn't be retrieved

### getSessionBeanInstance

    protected EJBLocalObject getSessionBeanInstance()
                                             throws NamingException,
                                                    InvocationTargetException

  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
  See Also:
    `newSessionBeanInstance()`

### releaseSessionBeanInstance

    protected void releaseSessionBeanInstance(EJBLocalObject ejb)

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

  Parameters:
    `ejb` - the EJB instance to release
  See Also:
    `removeSessionBeanInstance(javax.ejb.EJBLocalObject)`

### newSessionBeanInstance

    protected EJBLocalObject newSessionBeanInstance()
                                             throws NamingException,
                                                    InvocationTargetException

  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:
    `AbstractSlsbInvokerInterceptor.create()`

### removeSessionBeanInstance

    protected void removeSessionBeanInstance(EJBLocalObject ejb)

  Remove the given EJB instance.

  Parameters:
    `ejb` - the EJB instance to remove
  See Also:
    `EJBLocalObject.remove()`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2008 The Spring Framework.