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