【问题标题】:Can a remote-interface-view ejb still get injected using @EJB仍然可以使用@EJB 注入远程接口视图 ejb
【发布时间】:2013-03-16 14:56:22
【问题描述】:

我想知道我是否有一个远程接口 MyService 和相应的实现 EJB MyServiceBean 我是否仍然可以使用 @EJB 注释将 bean 实例注入到其他 ejbs 或来自 jsf 的托管 bean 在同一应用服务器。

如果是这种情况,我必须将注释放在接口上还是实现上?例如:

@EJB
private MyService myService;

或

@EJB
private MyServiceBean myService;

【问题讨论】:

    标签: jakarta-ee ejb


    【解决方案1】:

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

           @EJB
           private MyServiceBean myService;
    

    在您的案例中使用远程接口注入机制会导致不必要的往返来达到相同的结果。

    不同 EJB 调用模式的用例是

    1. @Remote:表示远程业务接口。方法参数按值传递 并且需要作为 RMI 协议的一部分进行序列化。(引自 Apress 的初始 Java EE6 平台)

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

    3. 无:这是未指定接口的普通注入类型。在与 EJB 相同的 JVM 中,这很好。从设计的角度来看(松耦合原则),你可能想使用@Local注入方法

    【讨论】:

      【解决方案2】:

      您如何获得 local 或 remote 企业 bean 的引用 @EJB 并不重要。使用注释

      @EJB
      ExampleBean exampleBean;
      

      【讨论】:

        猜你喜欢
        • 2012-05-11
        • 1970-01-01
        • 2017-03-13
        • 2011-02-12
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多