Separate Schnittstellen für lokale und ferne Enterprise JavaBeans (EJB) definieren

Eine Schnittstelle kann nicht gleichzeitig eine lokale Schnittstelle und eine ferne Schnittstelle sein. Sie können jedoch alle Methoden in einer einzigen Schnittstelle definieren und diese Schnittstelle dann erweitern, um separate lokale und ferne Schnittstellen zu erstellen, auf die in Annotationen und Elementen verwiesen werden kann.

Diese Regel markiert Schnittstellen, die sowohl in der Annotation javax.ejb.Local als auch in der Annotation javax.ejb.Remote derselben Klasse verwendet werden. Sie markiert außerdem die Elemente business-local und business-remote, die innerhalb desselben Elements session in der Datei ejb-jar.xml auf dieselbe Schnittstelle verweisen.

Im folgenden Java-Code wird die Referenz auf MyInterface.class in den Annotationen javax.ejb.Local und javax.ejb.Remote markiert.

öffentliche Schnittstelle MyInterface () { .. }

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

In der folgenden Datei ejb-jar.xml werden die Elemente business-local und business-remote von dieser Regel markiert.

<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>

Zur Vermeidung dieses Problems erweitern Sie diese Schrittstelle, um separate lokale und ferne Schnittstellen zu erstellen, die Sie dann in den Annotationen und Elementen referenzieren:

public interface MyInterfaceLocal extends MyInterface() 
{ .. }
public interface MyInterfaceRemote extends MyInterface() 
{ .. }