【发布时间】:2012-01-29 10:26:57
【问题描述】:
到目前为止,我几乎总是使用无接口 EJB,并且对 @Local 注释的需求有一点了解。考虑这个例子:
public interface MyBeanIntf { void doStuff(); }
@Stateless
public class MyBean implements MyBeanIntf { public void doStuff(){ } }
应该将MyBeanIntf 标记为@Local 吗?我没有看到任何好处,因为即使我没有将其注释为 @Local,我仍然可以使用 DI 将其正确地注入 UI 控制器:
@Named
@SessionScoped
public class TestController implements Serializable {
// injection works perfectly, even when MyBeanIntf is not marked as @Local
@Inject
private MyBeanIntf myBean;
// or even like this:
// @EJB
// private MyBeanIntf myBean;
}
让我们把它变得更复杂:
public interface MyBeanIntf { void doStuff(); }
public class MySuperBean implements MyBeanIntf { public void doStuff() { } }
@Stateless
public class MyBean extends MySuperBean { }
现在MyBean 是否被视为有效的Local EJB bean?我有一些疑问,因为它间接实现了接口。
【问题讨论】:
标签: glassfish-3 ejb-3.1