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