介面不得同時為本端及遠端。但是,您可以在單一介面中定義所有方法,然後延伸該介面以建立可在註釋或元素中參照的個別本端及遠端介面。
此規則會標示在相同類別內的 javax.ejb.Local 及 javax.ejb.Remote 註釋中同時使用的介面。
它還會標示參照 ejb-jar.xml 檔中相同 session 元素內相同介面的 business-local 及 business-remote 元素。
在下列 Java 程式碼中,會在 javax.ejb.Local 及 javax.ejb.Remote 註釋中標示對 MyInterface.class 的參照。
公用介面 MyInterface () { .. }
@Stateless(名稱 = "MyEJB")
@Remote(MyInterface.class) @Local(MyInterface.class) 公用 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;Container</transaction-type>
</session>
若要解決此問題,請延伸該介面以建立個別的本端及遠端介面,並在註釋或元素中參照這些介面。
public interface MyInterfaceLocal extends MyInterface()
{ .. }
public interface MyInterfaceRemote extends MyInterface()
{ .. }