【问题标题】:@EJB lookup as parameter instead of hard coded@EJB 查找作为参数而不是硬编码
【发布时间】:2016-04-04 19:12:59
【问题描述】:

我继承了一个带有一组 JSF 的 Java EE Web 应用程序,这些 JSF 利用 EJB 注入来访问 @Remote 接口:

@EJB(lookup = "java:global/myapp-business/myapp-services/CustomerFacadeBean")

它可以工作,但是当我正在为部署人员审查应用程序时,我想将其作为参数。

我想开发人员必须有充分的理由只使用lookup,所以作为第一个尝试,我愿意复制相同的场景。

但是,我想提出意见,让这种注入尽可能“便携”和“可配置”。如果我在 Ejb 2 的旧时代没有错的话,web.xml 中有 ejb-ref。

【问题讨论】:

    标签: jakarta-ee jndi lookup ejb-3.1


    【解决方案1】:

    @EJB 声明了一个 EJB 引用,并且应用程序服务器需要在部署时支持 EJB 引用的可配置绑定。注释的lookup 属性允许开发人员指定默认绑定,除非部署者覆盖它。您需要查阅您的应用服务器文档以确定如何配置此绑定。

    注意,@EJB 注解有一个name 属性,这是部署者必须配置的。如果未提供 name 属性,则默认为 <class>/<member>。例如,如果类为test.MyBean,字段为myEjb,则EJB 引用名称将为test.MyBean/myEjb

    【讨论】:

      【解决方案2】:

      JNDI 查找需要来自 J2EE 6+ 的查找属性才能解析目标。旧版本中使用的其他 JNDI 查找方式例如:@EJB(name="myBean") 在组件命名空间中创建引用 java:comp/env/myBean。 如果属性中没有指定名称,那么它会创建一个引用为 java:comp/env/com.example.MyClass/myField

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-18
        • 2016-06-15
        • 1970-01-01
        • 2011-05-15
        • 2012-06-05
        • 1970-01-01
        相关资源
        最近更新 更多