类 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
- 所有已实现的接口:
Advice
,Interceptor
,MethodInterceptor
,InitializingBean
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(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
构造器详细资料
LocalSlsbInvokerInterceptor
public LocalSlsbInvokerInterceptor()
方法详细资料
invokeInContext
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()
andreleaseSessionBeanInstance(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 JNDIInvocationTargetException
- 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 JNDIInvocationTargetException
- if thrown by the create method- 另请参阅:
AbstractSlsbInvokerInterceptor.create()
removeSessionBeanInstance
protected void removeSessionBeanInstance(EJBLocalObject ejb)
Remove the given EJB instance.- 参数:
ejb
- the EJB instance to remove- 另请参阅:
EJBLocalObject.remove()