Definir interfaces aparte para Enterprise JavaBeans (EJB) locales y remotos

Una interfaz no puede ser local y remota a la vez. Sin embargo, puede definir todos los métodos en una sola interfaz y a continuación ampliar la interfaz para crear interfaces locales y remotas aparte a las que puede hacer referencia en anotaciones o elementos.

Esta regla marca interfaces que se utilizan en las anotaciones javax.ejb.Local y javax.ejb.Remote en la misma clase. También marca los elementos business-local y business-remote que hacen referencia a la misma interfaz en el mismo elemento session en el archivo ejb-jar.xml.

En el código Java siguiente, la referencia a MyInterface.class se marca en las anotaciones javax.ejb.Local y javax.ejb.Remote.

public interface MyInterface () { .. }
@Stateless(name="MyEJB")
@Remote(MyInterface.class)
@Local(MyInterface.class)
public final class MyEJB implements MyInterface {
    ...
}

En el archivo ejb-jar.xml siguiente, esta regla marca los elementos business-local y business-remote.

<session>
    <ejb-name>MyEJB</ejb-name>
    <business-local>com.ibm.sample.MyInterface</business-local>
    <business-remote>com.ibm.sample.MyInterface</business-remote>
    <ejb-class>com.ibm.sample.MyEJB</ejb-class>
    <session-typegt;Stateless</session-type>
    <transaction-typegt;Container</transaction-type>
 </session>

Para resolver este problema, amplíe la interfaz para crear interfaces locales y remotas y haga referencias a ellas en las anotaciones o los elementos:

public interface MyInterfaceLocal extends MyInterface() 
{ .. }
public interface MyInterfaceRemote extends MyInterface() 
{ .. }