[jboss-jira] [JBoss JIRA] (WFLY-2800) Re-invoking InterceptorContext.proceed() throws CannotProceedException
David Lloyd (JIRA)
issues at jboss.org
Mon Jan 27 11:07:29 EST 2014
[ https://issues.jboss.org/browse/WFLY-2800?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Lloyd updated WFLY-2800:
------------------------------
Steps to Reproduce:
Deploy a session bean that requires a transaction and have it throw a org.jboss.util.deadlock.ApplicationDeadlockException.
or
Add the following test case to org.jboss.invocation.test.ChainedInterceptorTestCase and run mvn test on the jboss-invocation subproject.
{code}
/**
* What if again re-invokes a chained interceptor?
*/
@Test
public void testAgainWithChain() throws Exception {
Method method = ChainedInterceptorTestCase.class.getMethod("echo", String.class);
InterceptorContext context = new InterceptorContext();
context.setMethod(method);
context.setTarget(this);
context.setParameters(new Object[] { "testAgain" });
Interceptor again = new Interceptor() {
private int num = 2;
@Override
public Object processInvocation(InterceptorContext context) throws Exception {
StringBuilder result = new StringBuilder();
while ((num--) > 0)
result.append(context.proceed());
return result;
}
};
Interceptor interceptor1 = Interceptors.getChainedInterceptor(createMyInterceptor("1"), createMyInterceptor("2"), Interceptors.getInvokingInterceptor());
Interceptor interceptor2 = Interceptors.getChainedInterceptor(createMyInterceptor("3"), createMyInterceptor("4"), again, interceptor1);
String result = (String) interceptor2.processInvocation(context);
String expected = "3#4#1#2#Echo testAgain1#2#Echo testAgain";
assertEquals(expected, result);
}
}
{code}
was:
Deploy a session bean that requires a transaction and have it throw a org.jboss.util.deadlock.ApplicationDeadlockException.
or
Add the following test case to org.jboss.invocation.test.ChainedInterceptorTestCase and run mvn test on the jboss-invocation subproject.
/**
* What if again re-invokes a chained interceptor?
*/
@Test
public void testAgainWithChain() throws Exception {
Method method = ChainedInterceptorTestCase.class.getMethod("echo", String.class);
InterceptorContext context = new InterceptorContext();
context.setMethod(method);
context.setTarget(this);
context.setParameters(new Object[] { "testAgain" });
Interceptor again = new Interceptor() {
private int num = 2;
@Override
public Object processInvocation(InterceptorContext context) throws Exception {
StringBuilder result = new StringBuilder();
while ((num--) > 0)
result.append(context.proceed());
return result;
}
};
Interceptor interceptor1 = Interceptors.getChainedInterceptor(createMyInterceptor("1"), createMyInterceptor("2"), Interceptors.getInvokingInterceptor());
Interceptor interceptor2 = Interceptors.getChainedInterceptor(createMyInterceptor("3"), createMyInterceptor("4"), again, interceptor1);
String result = (String) interceptor2.processInvocation(context);
String expected = "3#4#1#2#Echo testAgain1#2#Echo testAgain";
assertEquals(expected, result);
}
}
> Re-invoking InterceptorContext.proceed() throws CannotProceedException
> ----------------------------------------------------------------------
>
> Key: WFLY-2800
> URL: https://issues.jboss.org/browse/WFLY-2800
> Project: WildFly
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Reporter: Eric van der Maarel
>
> When you invoke and re-invoke org.jboss.invocation.InterceptorContext.proceed() from an interceptor in a chain of interceptors and the interceptor to be (re-)invoked is a org.jboss.invocation.ChainedInterceptor or WeavedInterceptor, a CannotProceedException is thrown.
> This bug has been described and analysed in the context of the ejb3 container, on the forum at https://community.jboss.org/message/853547.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list