Definovat samostatná rozhraní pro lokální a vzdálené objekty Enterprise JavaBean (EJB)

Rozhraní nemůže být ve stejném čase lokální a vzdálené. Můžete ale definovat všechny metody v jednom rozhraní a pak rozhraní rozšířit, aby se vytvořila samostatná lokální a vzdálená rozhraní, na která lze odkazovat v anotacích nebo prvcích.

Toto pravidlo značí rozhraní, která se používají u anotací javax.ejb.Local a javax.ejb.Remote ve stejné třídě. Dále označí prvky business-local a business-remote, které odkazují na stejné rozhraní v rámci stejného prvku session v souboru ejb-jar.xml.

V následujícím kódu Java je odkaz na MyInterface.class označen u anotací javax.ejb.Local a javax.ejb.Remote.

veřejné rozhraní MyInterface () { .. }

@Stateless(name = "MyEJB")
@Remote(MyInterface.class) @Local(MyInterface.class) veřejná konečná třída MyEJB implementuje MyInterface {
    ...
}

V následujícím souboru ejb-jar.xml jsou prvky business-local a business-remote označeny tímto pravidlem.

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

Chcete-li tento problém vyřešit, rozšiřte rozhraní a vytvořte samostatná lokální a vzdálená rozhraní a odkazujte na ně na anotacích nebo prvcích:

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