Интерфейс не может быть и локальным, и удаленным одновременно. Но можно определить все методы в одном интерфейсе, а затем создать отдельно локальный и удаленный интерфейсы как его расширения и ссылаться на них в аннотациях и элементах.
Это правило помечает интерфейсы, используемые и в аннотациях 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()
{ .. }