我可以在远程/本地接口中使用继承吗? (EJB3)

时间:2009-08-29 13:22:55

标签: java java-ee ejb-3.0

一个例子:

@Remote
public interface SomeComponentRemote{

    public Something processStuff();

}

//--

@Local
public interface SomeComponentLocal extends SomeComponentRemote{

}

这是允许的吗?我可以定期这样做吗?

2 个答案:

答案 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访问而不是为其他用户设想?

你能做的唯一不好的事情是通过懒惰而非意图来设计界面。也不排除编写更少的代码。