public abstract class AbstractRemoteSlsbInvokerInterceptor extends AbstractSlsbInvokerInterceptor
Such an interceptor must be the last interceptor in the advice chain. In this case, there is no target object.
CONTAINER_PREFIXlogger| Constructor and Description |
|---|
AbstractRemoteSlsbInvokerInterceptor() |
| Modifier and Type | Method and Description |
|---|---|
protected abstract java.lang.Object |
doInvoke(MethodInvocation invocation)
Perform the given invocation on the current EJB home.
|
protected java.lang.reflect.Method |
getCreateMethod(java.lang.Object home)
Check for EJB3-style home object that serves as EJB component directly.
|
java.lang.Object |
invokeInContext(MethodInvocation invocation)
Fetches an EJB home object and delegates to
doInvoke. |
protected boolean |
isConnectFailure(java.rmi.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 java.lang.Object |
newSessionBeanInstance()
Return a new instance of the stateless session bean.
|
protected java.lang.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 |
setRefreshHomeOnConnectFailure(boolean refreshHomeOnConnectFailure)
Set whether to refresh the EJB home on connect failure.
|
afterPropertiesSet, create, getHome, invoke, refreshHome, setCacheHome, setExposeAccessContext, setLookupHomeOnStartupgetExpectedType, getJndiName, lookup, setExpectedType, setJndiNameconvertJndiName, isResourceRef, lookup, lookup, setResourceRefgetJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplatepublic AbstractRemoteSlsbInvokerInterceptor()
public void setRefreshHomeOnConnectFailure(boolean refreshHomeOnConnectFailure)
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.
ConnectException,
ConnectIOException,
NoSuchObjectExceptionprotected boolean isHomeRefreshable()
AbstractSlsbInvokerInterceptorisHomeRefreshable in class AbstractSlsbInvokerInterceptorprotected java.lang.reflect.Method getCreateMethod(java.lang.Object home)
throws EjbAccessException
getCreateMethod in class AbstractSlsbInvokerInterceptorhome - the EJB home objectEjbAccessException - if the method couldn't be retrieved@Nullable public java.lang.Object invokeInContext(MethodInvocation invocation) throws java.lang.Throwable
doInvoke.
If configured to refresh on connect failure, it will call
refreshAndRetry(org.aopalliance.intercept.MethodInvocation) on corresponding RMI exceptions.
invokeInContext in class AbstractSlsbInvokerInterceptorinvocation - the AOP method invocationjava.lang.Throwable - in case of invocation failureAbstractSlsbInvokerInterceptor.getHome(),
doInvoke(org.aopalliance.intercept.MethodInvocation),
refreshAndRetry(org.aopalliance.intercept.MethodInvocation)protected boolean isConnectFailure(java.rmi.RemoteException ex)
The default implementation delegates to RmiClientInterceptorUtils.
ex - the RMI exception to checkRmiClientInterceptorUtils.isConnectFailure(java.rmi.RemoteException)@Nullable protected java.lang.Object refreshAndRetry(MethodInvocation invocation) throws java.lang.Throwable
invocation - the AOP method invocationjava.lang.Throwable - in case of invocation failureAbstractSlsbInvokerInterceptor.invoke(org.aopalliance.intercept.MethodInvocation)@Nullable protected abstract java.lang.Object doInvoke(MethodInvocation invocation) throws java.lang.Throwable
invocation - the AOP method invocationjava.lang.Throwable - in case of invocation failureAbstractSlsbInvokerInterceptor.getHome(),
newSessionBeanInstance()protected java.lang.Object newSessionBeanInstance()
throws javax.naming.NamingException,
java.lang.reflect.InvocationTargetException
Can be overridden to change the algorithm.
javax.naming.NamingException - if thrown by JNDIjava.lang.reflect.InvocationTargetException - if thrown by the create methodAbstractSlsbInvokerInterceptor.create()protected void removeSessionBeanInstance(@Nullable EJBObject ejb)
ejb - the EJB instance to removeEJBObject.remove()