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()
{ .. }