]
Stuart Douglas moved WFLY-9680 to WFCORE-3512:
----------------------------------------------
Project: WildFly Core (was: WildFly)
Key: WFCORE-3512 (was: WFLY-9680)
Component/s: Server
(was: EJB)
Affects Version/s: (was: 10.1.0.Final)
(was: 11.0.0.Final)
EJBs can't inherit a JDK8 default method when default
implementation is in a third interface
--------------------------------------------------------------------------------------------
Key: WFCORE-3512
URL:
https://issues.jboss.org/browse/WFCORE-3512
Project: WildFly Core
Issue Type: Bug
Components: Server
Reporter: Daniel Bildhauer
Assignee: Stuart Douglas
Attachments: ejb-in-ear.zip, wildfly-ejb-in-ear-ear.ear
Given the following class/interface inheritance structure, the interface method doMagic
could not be called from a remote view, even if there is a default implementation as given
in the mixin interface. A local call works, but the remote call fails with a message like
{code}
org.jboss.invocation.CannotProceedException: INV000002: Invocation cannot proceed (end of
interceptor chain has been hit)
{code}
Example code:
{code}
@Remote
interface MyEJBInterface {
void doMagic();
}
interface MyEJBMixin extends MyEJBInterface {
default void doMagic() { .... }
}
@Stateless
class MyEJBBean extends MyEJBMixin {
}
{code}
The problem is inside the fix for WFLY-4354 bug, which checks only for the default method
implementation in the interface declaring the method the first time but not in other
interfaces.
A example is attached and I will submitt a pull request with a fix.