Zdefiniuj osobne interfejsy dla lokalnych i zdalnych komponentów EJB (Enterprise JavaBeans)

Interfejs nie może być jednocześnie lokalny i zdalny. Jednak można zdefiniować wszystkie metody w jednym interfejsie, a następnie rozszerzyć interfejs w celu utworzenia oddzielnych interfejsów zdalnych i lokalnych, do których można się odwoływać w adnotacjach lub elementach.

Ta reguła powoduje oznaczenie flagą interfejsów, które są używane zarówno w adnotacjach javax.ejb.Local, jak i javax.ejb.Remote w tej samej klasie. Powoduje ona również oznaczenie flagą elementów business-local i business-remote odwołujących się do tego samego interfejsu w tym samym elemencie session w pliku ejb-jar.xml.

W poniższym kodzie Java odwołanie do klasy MyInterface.class zostało oznaczone flagą w adnotacjach javax.ejb.Local i javax.ejb.Remote.

public interface MyInterface () { .. }

@Stateless(name = "MyEJB")
@Remote(MyInterface.class) @Local(MyInterface.class) public final class MyEJB implements MyInterface {
    ...
}

W poniższym pliku ejb-jar.xml elementy business-local i business-remote są oznaczane flagą przez tę regułę.

<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; Kontener</transaction-type> </session>

Aby rozwiązać ten problem, należy rozszerzyć interfejs w celu utworzenia oddzielnych interfejsów lokalnych i zdalnych oraz przywoływać je w adnotacjach lub elementach:

public interface MojInterfejslokalny extends MojInterfejs()
{ .. }
public interface MojInterfejsZdalny extends MojInterfejs()
{ .. }