하나의 인터페이스가 동시에 로컬 및 원격이 될 수는 없습니다. 그러나 단일 인터페이스 내에 모든 메소드를 정의한 후 해당 인터페이스를 확장하여 어노테이션 또는 요소에서 참조할 수 있는 개별 로컬 및 원격 인터페이스를 작성할 수 있습니다.
이 규칙은 동일한 클래스의 javax.ejb.Local과 javax.ejb.Remote 어노테이션 둘 다에서 사용되는 인터페이스에 플래그를 지정합니다.
또한 ejb-jar.xml 파일의 동일한 session 요소 내에서 동일한 인터페이스를 참조하는
business-local 및 business-remote 요소에도 플래그를 지정합니다.
다음 Java 코드에서 MyInterface.class에 대한 참조는 javax.ejb.Local 및 javax.ejb.Remote 어노테이션에서 플래그가 지정됩니다.
공용 인터페이스 MyInterface () { .. }
@Stateless(이름 = "MyEJB")
@Remote(MyInterface.class) @Local(MyInterface.class) public final 클래스 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>
< transaction-typegt; 컨테이너</transaction-type> </session>
이 문제를 해결하려면 인터페이스를 확장하여 개별 로컬 및 원격 인터페이스를 작성하고 어노테이션 또는 요소에서 그들을 참조하십시오.
public interface MyInterfaceLocal extends MyInterface()
{ .. }
public interface MyInterfaceRemote extends MyInterface()
{ .. }