一个例子:
@Remote
public interface SomeComponentRemote{
public Something processStuff();
}
//--
@Local
public interface SomeComponentLocal extends SomeComponentRemote{
}
这是允许的吗?我可以定期这样做吗?
答案 0 :(得分:5)
不允许使用您的方式,因为您无法根据规范使用@Local和@Remote注释来标记您的界面。从代码阅读的角度来看,这不是一个好主意。
推荐的解决方案是
public interface SomeComponent {
public Something processStuff();
}
@Local
public interface SomeComponentLocal extends SomeComponent {
}
@Remote
public interface SomeComponentRemote extends SomeComponent {
}
答案 1 :(得分:3)
此代码将起作用,因为@ local / @ remote annotations不会被继承。在实现远程接口(而不是本地接口)时,也可以使用@LocalBean在bean本身上设置无接口视图。
更重要的一点是,每个接口应该只提供此类用户所需的内容,因为您提供的每种方法都可能被使用,然后您必须维护此方法。
问题是你要做什么:两个接口都会一直提供相同的方法吗?或者是一个接口是另一个接口的可能子集(如果你从远程扩展本地,那么它表明也许并非每个本地的添加都将作为远程提供)。 @LocalBean也是如此 - 是否有公共方法只能由ejb-container访问而不是为其他用户设想?
你能做的唯一不好的事情是通过懒惰而非意图来设计界面。也不排除编写更少的代码。