Интерфейс не может быть и локальным, и удаленным одновременно. Но можно определить все методы в одном интерфейсе, а затем создать отдельно локальный и удаленный интерфейсы как его расширения и ссылаться на них в аннотациях и элементах.
Это правило помечает интерфейсы, используемые и в аннотациях javax.ejb.Local, и в аннотациях javax.ejb.Remote в одном классе.
Оно также помечает элементы business-local и business-remote, ссылающиеся на один интерфейс в одном элементе session в файле ejb-jar.xml.
В следующем коде Java ссылка на MyInterface.class помечается в аннотациях javax.ejb.Local и javax.ejb.Remote.
public interface MyInterface () { .. }
@Stateless(name="MyEJB")
@Remote(MyInterface.class)
@Local(MyInterface.class)
public final class MyEJB implements 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>
<transaction-typegt;Container</transaction-type>
</session>
|
Для устранения этой неполадки создайте отдельные локальный и удаленный интерфейсы как расширения данного интерфейса и укажите их в аннотациях или элементах:
public interface MyInterfaceLocal extends MyInterface()
{ .. }
public interface MyInterfaceRemote extends MyInterface()
{ .. }