org.springframework.ejb.access

## 类 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

- 所有已实现的接口:
    org.aopalliance.aop.Advice, org.aopalliance.intercept.Interceptor, org.aopalliance.intercept.MethodInterceptor, org.springframework.beans.factory.InitializingBean
  直接已知子类:
    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).

  作者:
    Rod Johnson, Juergen Hoeller
  另请参阅:
    `AbstractSlsbInvokerInterceptor.setLookupHomeOnStartup(boolean)`, `AbstractSlsbInvokerInterceptor.setCacheHome(boolean)`

- - ### 字段概要

    - ### 从类继承的字段 org.springframework.jndi.JndiLocatorSupport

      `CONTAINER_PREFIX`

    - ### 从类继承的字段 org.springframework.jndi.JndiAccessor

      `logger`

  - ### 构造器概要

    构造器
    构造器和说明
    `LocalSlsbInvokerInterceptor()`

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected Method` | `getCreateMethod(Object home)` Check for EJB3-style home object that serves as EJB component directly.
    `protected Object` | `getSessionBeanInstance()` Return an EJB instance to delegate the call to.
    `Object` | `invokeInContext(org.aopalliance.intercept.MethodInvocation invocation)` This implementation "creates" a new EJB instance for each invocation.
    `protected Object` | `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.

    - ### 从类继承的方法 org.springframework.ejb.access.AbstractSlsbInvokerInterceptor

      `afterPropertiesSet, create, getHome, invoke, isHomeRefreshable, refreshHome, setCacheHome, setExposeAccessContext, setLookupHomeOnStartup`

    - ### 从类继承的方法 org.springframework.jndi.JndiObjectLocator

      `getExpectedType, getJndiName, lookup, setExpectedType, setJndiName`

    - ### 从类继承的方法 org.springframework.jndi.JndiLocatorSupport

      `convertJndiName, isResourceRef, lookup, lookup, setResourceRef`

    - ### 从类继承的方法 org.springframework.jndi.JndiAccessor

      `getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate`

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 构造器详细资料

    - #### LocalSlsbInvokerInterceptor

          public LocalSlsbInvokerInterceptor()

  - ### 方法详细资料

    - #### invokeInContext

          @Nullable
          public Object invokeInContext(org.aopalliance.intercept.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(javax.ejb.EJBLocalObject)` to change EJB instance creation, for example to hold a single shared EJB instance.

      指定者:
        `invokeInContext` 在类中 `AbstractSlsbInvokerInterceptor`
      参数:
        `invocation` - the AOP method invocation
      返回:
        the invocation result, if any
      抛出:
        `Throwable` - in case of invocation failure

    - #### getCreateMethod

          protected Method getCreateMethod(Object home)
                                    throws EjbAccessException

      Check for EJB3-style home object that serves as EJB component directly.
      覆盖:
        `getCreateMethod` 在类中 `AbstractSlsbInvokerInterceptor`
      参数:
        `home` - the EJB home object
      返回:
        the create method
      抛出:
        `EjbAccessException` - if the method couldn't be retrieved

    - #### getSessionBeanInstance

          protected Object getSessionBeanInstance()
                                           throws NamingException,
                                                  InvocationTargetException

      Return an EJB instance to delegate the call to. Default implementation delegates to newSessionBeanInstance.
      抛出:
        `NamingException` - if thrown by JNDI
        `InvocationTargetException` - if thrown by the create method
      另请参阅:
        `newSessionBeanInstance()`

    - #### releaseSessionBeanInstance

          protected void releaseSessionBeanInstance(EJBLocalObject ejb)

      Release the given EJB instance. Default implementation delegates to removeSessionBeanInstance.
      参数:
        `ejb` - the EJB instance to release
      另请参阅:
        `removeSessionBeanInstance(javax.ejb.EJBLocalObject)`

    - #### newSessionBeanInstance

          protected Object newSessionBeanInstance()
                                           throws NamingException,
                                                  InvocationTargetException

      Return a new instance of the stateless session bean. Can be overridden to change the algorithm.
      抛出:
        `NamingException` - if thrown by JNDI
        `InvocationTargetException` - if thrown by the create method
      另请参阅:
        `AbstractSlsbInvokerInterceptor.create()`

    - #### removeSessionBeanInstance

          protected void removeSessionBeanInstance(@Nullable
                                                   EJBLocalObject ejb)

      Remove the given EJB instance.
      参数:
        `ejb` - the EJB instance to remove
      另请参阅:
        `EJBLocalObject.remove()`