Egy felület nem lehet egyszerre helyi és távoli. Azonban meghatározhatja az összes metódust egyetlen felületben, és ezután kiterjesztheti a felületet, hogy létrehozzon külön helyi és távoli felületeket, amelyekre annotációkhoz vagy elemekhez hivatkozhat.
Ez a szabály megjelöli a felületeket, amelyek egyazon osztályhoz egyaránt használják a javax.ejb.Local és a javax.ejb.Remote annotációt.
Megjelöli a business-local és business-remote
elemeket is, amelyek ugyanarra a felületre hivatkoznak egyazon
session elemen belül az ejb-jar.xml fájlban.
A következő Java kódban a MyInterface.class osztályra
mutató hivatkozás meg van jelölve a javax.ejb.Local
és a javax.ejb.Remote annotációval.
Nyilvános felület MyInterface () { .. }
@Stateless(név = "MyEJB")
@Remote(MyInterface.class) @Local(MyInterface.class) nyilvános záróosztály MyEJB megvalósítja a MyInterface {
...
}
A következő ejb-jar.xml fájlban a szabály
megjelöli a business-local és a business-remote
elemeket.
<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; tároló</transaction-type>
</session>
A probléma megoldása érdekében terjessze ki a felületet, hogy külön helyi és távoli felületeket hozzon létre, és ezekre hivatkozzon az annotációknál vagy elemeknél:
public interface MyInterfaceLocal extends MyInterface()
{ .. }
public interface MyInterfaceRemote extends MyInterface()
{ .. }