Migration Issue: This migration issue is related to the inheritance of client view in a session bean. Consider the following code fragment where session beans A and B exposes local business interface ( or client views using EJB 3.X specification terminology).

    // Assume Foo is a local business interface         
    @Stateless
    public class A implements Foo { ... }

    // Assume Bar is a local business interface
    @Stateless
    public class B extends A implements Bar { ... }

So does session bean B expose Foo or not ? This was unclear on EJB 3.0, JBoss allows it while GlassFish v2 does not. Hence the migration issue.

EJB 3.1 clarified the inheritance semantics. According to EJB 3.1, session bean B will expose only Bar but not Foo i.e. there is no inhertiance of client views. EJB 3.1, Section 4.9.2.1, "Session Bean Superclass" states the following:

For the purposes of processing a particular session bean class, all superclass processing is identical regardless of whether the superclasses are themselves session bean classes. In this regard, the use of session bean classes as superclasses merely represents a convenient use of implementation inheritance, but does not have component inheritance semantics.

Migration Path:So, the migration path for this issue is to follow EJB 3.1 semantics. i.e. if you want session bean B to expose Foo, then explicitly include Foo in the interfaces exposed by session bean B as follows:

    @Stateless
    public class A implements Foo { ... }
   
    // Add Foo to expose Foo in session bean B's client views.
    @Stateless
    public class B extends A implements Foo, Bar { ... }