try
{
AllowedOperationsAssociation.pushInMethodFlag(AllowedOperationsFlags.IN_EJB_TIMEOUT);
// get the method info (AOP stuff)
MethodInfo info = super.getMethodInfo(tMethod);
// get hold of the unadvised method, so that we can mark it accessible
// for the duration of this call (Remember, timeout methods can be with private, protected, package access modifier)
Method unadvisedMethod = info.getUnadvisedMethod();
// mark as accessible before invoking
unadvisedMethod.setAccessible(true);
try
{
// the timeout method (even if private, protected etc...) should pass through the AOP interceptor
// chain. Hence we have a specific AOP interceptor stack for timeout method. Get hold of those interceptors
Interceptor[] timeoutMethodAOPInterceptors = this.getInterceptors(info.getJoinpoint(),SLSB_TIMEOUT_METHOD_AOP_INTERCEPTOR_STACK_NAME);
// now create an invocation for the method info and the timeout method interceptors
EJBContainerInvocation nextInvocation = new SessionContainerInvocation(null, info,
timeoutMethodAOPInterceptors, this.getAsynchronousExecutor());
nextInvocation.setAdvisor(getAdvisor());
nextInvocation.setArguments(args);