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.

public interface MyInterface () { .. }

@Stateless(name="MyEJB")
@Remote(MyInterface.class)
@Local(MyInterface.class)
public final class MyEJB implements 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;Container</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() 
{ .. }