2013-03-16 73 views
1

注入我想知道是否我有一个远程接口MyService和相应的实现EJB MyServiceBean我仍然可以注入一个使用@EJB批注的bean实例到其他ejbs或从运行在同一应用程序服务器上的jsf管理bean。远程接口视图ejb仍然可以使用@EJB

如果是这样的话,我必须把注释放在界面上还是在实现上? E.g:

@EJB 
private MyService myService; 

@EJB 
private MyServiceBean myService; 

回答

2

如果您所访问的同一JVM中的EJB内从客户端的EJB,远程接口不用。远程接口由驻留在EJB部署的JVM外部的EJB客户机使用。因此,在您的特定情况下,所有你需要的是

 @EJB 
     private MyServiceBean myService; 

使用在你的情况下,远程接口注入机制会导致不必要的往返在获得相同的结果。

的使用情况不同的EJB调用模式

  1. @Remote:表示一个远程业务接口。方法参数是按值传递 和需要是可序列化的RMI协议的一部分

  2. @Local(Apress出版的初级Java EE6平台引用):表示一个本地业务接口。方法参数通过引用 从客户端传递到bean(引用自Apress'开始的Java EE6平台)

  3. 无:这是没有指定接口的普通注入类型。在与EJB相同的JVM中,这很好。从视图(松耦合原则)设计的时候,您可能希望使用@Local注射方法

0

不要紧,你是怎么获得的当地远程企业Bean引用@EJB。使用注释

@EJB 
ExampleBean exampleBean;