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.

interfaz pública MyInterface () { .. }

@Stateless(name = "MyEJB")
@Remote(MyInterface.class) @Local(MyInterface.class) public final class MyEJB implementa 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>
    < tipo-transacción; Contenedor</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() 
{ .. }