任一接口不能同时既是本地接口又是远程接口。但是,可以在单一接口中定义所有方法,然后扩展此接口以创建可供您在注释或元素上引用的本地和远程接口。
此规则标记同一个类上的 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) 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>
<transaction-typegt;Container</transaction-type>
</session>
要解决此问题,请扩展接口以创建单独的本地和远程接口,并在注释或元素上引用这些接口。
public interface MyInterfaceLocal extends MyInterface()
{ .. }
public interface MyInterfaceRemote extends MyInterface()
{ .. }