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()
{ .. }