Следует создавать отдельные интерфейсы для локальных и удаленных EJB

Интерфейс не может быть и локальным, и удаленным одновременно. Но можно определить все методы в одном интерфейсе, а затем создать отдельно локальный и удаленный интерфейсы как его расширения и ссылаться на них в аннотациях и элементах.

Это правило помечает интерфейсы, используемые и в аннотациях javax.ejb.Local, и в аннотациях javax.ejb.Remote в одном классе. Оно также помечает элементы business-local и business-remote, ссылающиеся на один интерфейс в одном элементе session в файле ejb-jar.xml.

В следующем коде Java ссылка на MyInterface.class помечается в аннотациях javax.ejb.Local и javax.ejb.Remote.

открытый интерфейс MyInterface () { .. }

@Stateless(name = "MyEJB")
@Remote(классMyInterface.class)
@Local(MyInterface.class) public final class MyEJB реализует MyInterface {
    ...
}

В следующем файле ejb-jar.xml элементы business-local и business-remote помечаются данным правилом.

<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>
    < transactiontypegt; Контейнер</transaction-type>
 </session>

Для устранения этой неполадки создайте отдельные локальный и удаленный интерфейсы как расширения данного интерфейса и укажите их в аннотациях или элементах:

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