로컬 및 원격 EJB(Enterprise JavaBeans)를 위한 별도의 인터페이스 정의

하나의 인터페이스가 동시에 로컬 및 원격이 될 수는 없습니다. 그러나 단일 인터페이스 내에 모든 메소드를 정의한 후 해당 인터페이스를 확장하여 어노테이션 또는 요소에서 참조할 수 있는 개별 로컬 및 원격 인터페이스를 작성할 수 있습니다.

이 규칙은 동일한 클래스의 javax.ejb.Localjavax.ejb.Remote 어노테이션 둘 다에서 사용되는 인터페이스에 플래그를 지정합니다. 또한 ejb-jar.xml 파일의 동일한 session 요소 내에서 동일한 인터페이스를 참조하는 business-localbusiness-remote 요소에도 플래그를 지정합니다.

다음 Java 코드에서 MyInterface.class에 대한 참조는 javax.ejb.Localjavax.ejb.Remote 어노테이션에서 플래그가 지정됩니다.

public interface MyInterface () { .. }
@Stateless(name="MyEJB")
@Remote(MyInterface.class)
@Local(MyInterface.class)
public final class MyEJB implements MyInterface {
    ...
}

다음 ejb-jar.xml 파일에서 business-localbusiness-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() 
{ .. }