O interfaţă nu poate fi locală şi la distanţă în acelaşi timp. Cu toate acestea, puteţi defini toate metodele într-o singură interfaţă şi apoi să extindeţi interfaţa pentru a crea interfeţe locale şi la distanţă separate la care puteţi face referinţă pe adnotări sau elemente.
Această regulă semnalează interfeţele care sunt utilizate pe ambele adnotări javax.ejb.Local şi javax.ejb.Remote pe aceeaşi clasă.
De asemenea, semnalează elementele business-local şi business-remote care fac referinţă la aceeaşi interfaţă în
acelaşi element session din fişierul ejb-jar.xml.
În codul Java următor, referinţa la MyInterface.class este semnalată pe adnotările javax.ejb.Local şi javax.ejb.Remote.
Interfață MyInterface () { .. }
@Stateless(nume = "MyEJB")
{
...
} @Remote(MyInterface.class) @Local(MyInterface.class) MyInterface final class MyEJB
În fişierul următor ejb-jar.xml,
elementele business-local şi business-remote sunt semnalate de această regulă.
<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>
< tranzaction-typegt; Container</transaction-type>
</session>
Pentru a rezolva această problemă, extindeţi interfaţa pentru a crea diferite interfeţe locale şi la distanţă şi faceţi referinţe la ele în adnotări sau elemente:
public interface MyInterfaceLocal extends MyInterface()
{ .. }
public interface MyInterfaceRemote extends MyInterface()
{ .. }