Details
-
Bug
-
Resolution: Obsolete
-
Major
-
None
-
7.1.0.Final
-
None
Description
When two uniquely defined Session Beans reference the same interface in the @Remote annotation, the following exception occurs:
Caused by: org.jboss.invocation.CannotProceedException: INV-00002:Invocation cannot proceed (end of interceptor chain has been hit) at org.jboss.invocation.InvocationMessages_$bundle.cannotProceed(InvocationMessages_$bundle.java:131) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:293) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:202) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] ... 100 more
This can occur from a copy-paste error:
RedSLSB.java
@Stateless @Remote(Red.class) public class RedSLSB implements Red { public void doWork() {...} ... }
BlueSLSB.java
@Stateless @Remote(Red.class) public class BlueSLSB implements Blue { ... }
An invocation on an @EJB injected RedSLSB on the method doWork() from within another SLSB (not BlueSLSB) provokes the exception above. Revising the @Remote annotation in the example code for BlueSLSB to @Remote(Blue.class) eliminates this issue. BlueSLSB turns out to be an arbitrary poorly defined bean uninvolved in the thread of execution leading to the exception.