I think the behavior of WildFly10/Weld2.3 is correct per the specs. The CDI spec: "The unrestricted set of bean types for a session bean contains all local interfaces of the bean and their superinterfaces. If the session bean has a no-interface view, the unrestricted set of bean types contains the bean class and all superclasses." (see also 3.2.2. Bean types of a session bean). In your case
Chas no-interface view because the client views exposed by
Bare not inherited by a subclass (
C) - see also EJB spec "220.127.116.11 Session Bean Superclasses" and "4.9.7 Session Bean’s Business Interface". Scenarios 2, 3 and 4 look fine (
Ais explicitly declared).
That line in the spec certainly seems to disallows our current usage. I guess something got tightened up in the implementations between the old and new versions which enforces this. Guess ill start migrating our code base as the fix is very simple and I understand the issue now.