我想知道我是否有远程接口MyService
和相应的实现EJB MyServiceBean
我是否仍然可以使用@EJB
注释将bean实例注入到其他ejbs或托管bean中来自在同一应用程序服务器上运行的jsf。
如果是这种情况,我是否必须在界面或实现上添加注释? E.g:
@EJB
private MyService myService;
或
@EJB
private MyServiceBean myService;
答案 0 :(得分:2)
如果您从与EJB相同的JVM中的客户端访问EJB,则Remote接口是不必要的。远程接口由驻留在部署EJB的JVM之外的EJB客户端使用。因此,在您的特定情况下,您只需要
@EJB
private MyServiceBean myService;
在您的情况下使用远程接口注入机制将导致不必要的往返以获得相同的结果。
不同EJB调用模式的用例是
@Remote
:表示远程业务接口。方法参数按值传递
并且需要作为RMI协议的一部分进行序列化。(引自Apress的Java EE6平台开始)
@Local
:表示本地业务接口。方法参数通过引用传递
从客户端到bean。(引自Apress的Java EE6平台开始)
无:这是普通的注入类型,没有指定接口。在与EJB相同的JVM中,这很好。从设计的角度来看(松散耦合原理),您可能想要使用@Local
注入方法
答案 1 :(得分:0)
如何获取本地或远程企业bean的引用@EJB
并不重要。使用注释
@EJB
ExampleBean exampleBean;