类 AbstractRemoteSlsbInvokerInterceptor
- java.lang.Object
- org.springframework.jndi.JndiAccessor
- org.springframework.jndi.JndiLocatorSupport
- org.springframework.jndi.JndiObjectLocator
- org.springframework.ejb.access.AbstractSlsbInvokerInterceptor
- org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor
- 所有已实现的接口:
Advice
,Interceptor
,MethodInterceptor
,InitializingBean
public abstract class AbstractRemoteSlsbInvokerInterceptor extends AbstractSlsbInvokerInterceptor
Base class for interceptors proxying remote Stateless Session Beans. Designed for EJB 2.x, but works for EJB 3 Session Beans as well.Such an interceptor must be the last interceptor in the advice chain. In this case, there is no target object.
- 作者:
- Rod Johnson, Juergen Hoeller
字段概要
从类继承的字段 org.springframework.jndi.JndiLocatorSupport
CONTAINER_PREFIX
从类继承的字段 org.springframework.jndi.JndiAccessor
logger
构造器概要
构造器 构造器 说明 AbstractRemoteSlsbInvokerInterceptor()
方法概要
所有方法 实例方法 抽象方法 具体方法 修饰符和类型 方法 说明 protected abstract Object
doInvoke(MethodInvocation invocation)
Perform the given invocation on the current EJB home.protected Method
getCreateMethod(Object home)
Check for EJB3-style home object that serves as EJB component directly.Object
invokeInContext(MethodInvocation invocation)
Fetches an EJB home object and delegates todoInvoke
.protected boolean
isConnectFailure(RemoteException ex)
Determine whether the given RMI exception indicates a connect failure.protected boolean
isHomeRefreshable()
Return whether the cached EJB home object is potentially subject to on-demand refreshing.protected Object
lookup()
This overridden lookup implementation performs a narrow operation after the JNDI lookup, provided that a home interface is specified.protected Object
newSessionBeanInstance()
Return a new instance of the stateless session bean.protected Object
refreshAndRetry(MethodInvocation invocation)
Refresh the EJB home object and retry the given invocation.protected void
removeSessionBeanInstance(EJBObject ejb)
Remove the given EJB instance.void
setHomeInterface(Class<?> homeInterface)
Set a home interface that this invoker will narrow to before performing the parameterless SLSBcreate()
call that returns the actual SLSB proxy.void
setRefreshHomeOnConnectFailure(boolean refreshHomeOnConnectFailure)
Set whether to refresh the EJB home on connect failure.从类继承的方法 org.springframework.ejb.access.AbstractSlsbInvokerInterceptor
afterPropertiesSet, create, getHome, invoke, refreshHome, setCacheHome, setExposeAccessContext, setLookupHomeOnStartup
从类继承的方法 org.springframework.jndi.JndiObjectLocator
getExpectedType, getJndiName, setExpectedType, setJndiName
从类继承的方法 org.springframework.jndi.JndiLocatorSupport
convertJndiName, isResourceRef, lookup, lookup, setResourceRef
从类继承的方法 org.springframework.jndi.JndiAccessor
getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate
构造器详细资料
AbstractRemoteSlsbInvokerInterceptor
public AbstractRemoteSlsbInvokerInterceptor()
方法详细资料
setHomeInterface
public void setHomeInterface(Class<?> homeInterface)
Set a home interface that this invoker will narrow to before performing the parameterless SLSBcreate()
call that returns the actual SLSB proxy.Default is none, which will work on all J2EE servers that are not based on CORBA. A plain
javax.ejb.EJBHome
interface is known to be sufficient to make a WebSphere 5.0 Remote SLSB work. On other servers, the specific home interface for the target SLSB might be necessary.
setRefreshHomeOnConnectFailure
public void setRefreshHomeOnConnectFailure(boolean refreshHomeOnConnectFailure)
Set whether to refresh the EJB home on connect failure. Default is "false".Can be turned on to allow for hot restart of the EJB server. If a cached EJB home throws an RMI exception that indicates a remote connect failure, a fresh home will be fetched and the invocation will be retried.
isHomeRefreshable
protected boolean isHomeRefreshable()
从类复制的说明:AbstractSlsbInvokerInterceptor
Return whether the cached EJB home object is potentially subject to on-demand refreshing. Default is "false".
lookup
protected Object lookup() throws NamingException
This overridden lookup implementation performs a narrow operation after the JNDI lookup, provided that a home interface is specified.- 覆盖:
lookup
在类中JndiObjectLocator
- 返回:
- the located target object
- 抛出:
NamingException
- if the JNDI lookup failed or if the located JNDI object is not assigable to the expected type- 另请参阅:
setHomeInterface(java.lang.Class<?>)
,javax.rmi.PortableRemoteObject#narrow
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
invokeInContext
public Object invokeInContext(MethodInvocation invocation) throws Throwable
Fetches an EJB home object and delegates todoInvoke
.If configured to refresh on connect failure, it will call
refreshAndRetry(org.aopalliance.intercept.MethodInvocation)
on corresponding RMI exceptions.- 指定者:
invokeInContext
在类中AbstractSlsbInvokerInterceptor
- 参数:
invocation
- the AOP method invocation- 返回:
- the invocation result, if any
- 抛出:
Throwable
- in case of invocation failure- 另请参阅:
AbstractSlsbInvokerInterceptor.getHome()
,doInvoke(org.aopalliance.intercept.MethodInvocation)
,refreshAndRetry(org.aopalliance.intercept.MethodInvocation)
isConnectFailure
protected boolean isConnectFailure(RemoteException ex)
Determine whether the given RMI exception indicates a connect failure.The default implementation delegates to RmiClientInterceptorUtils.
- 参数:
ex
- the RMI exception to check- 返回:
- whether the exception should be treated as connect failure
- 另请参阅:
RmiClientInterceptorUtils.isConnectFailure(java.rmi.RemoteException)
refreshAndRetry
protected Object refreshAndRetry(MethodInvocation invocation) throws Throwable
Refresh the EJB home object and retry the given invocation. Called by invoke on connect failure.- 参数:
invocation
- the AOP method invocation- 返回:
- the invocation result, if any
- 抛出:
Throwable
- in case of invocation failure- 另请参阅:
AbstractSlsbInvokerInterceptor.invoke(org.aopalliance.intercept.MethodInvocation)
doInvoke
protected abstract Object doInvoke(MethodInvocation invocation) throws Throwable
Perform the given invocation on the current EJB home. Template method to be implemented by subclasses.- 参数:
invocation
- the AOP method invocation- 返回:
- the invocation result, if any
- 抛出:
Throwable
- in case of invocation failure- 另请参阅:
AbstractSlsbInvokerInterceptor.getHome()
,newSessionBeanInstance()
newSessionBeanInstance
protected Object newSessionBeanInstance() throws NamingException, InvocationTargetException
Return a new instance of the stateless session bean. To be invoked by concrete remote SLSB invoker subclasses.Can be overridden to change the algorithm.
- 抛出:
NamingException
- if thrown by JNDIInvocationTargetException
- if thrown by the create method- 另请参阅:
AbstractSlsbInvokerInterceptor.create()
removeSessionBeanInstance
protected void removeSessionBeanInstance(EJBObject ejb)
Remove the given EJB instance. To be invoked by concrete remote SLSB invoker subclasses.- 参数:
ejb
- the EJB instance to remove- 另请参阅:
EJBObject.remove()