【问题标题】:@LocalBinding(jndiBinding="sample/student") of EJB 3.0 not present in EJB 3.2EJB 3.0 的 @LocalBinding(jndiBinding="sample/student") 在 EJB 3.2 中不存在
【发布时间】:2015-02-25 14:39:31
【问题描述】:

EJB 3.0 中的@LocalBinding(jndiBinding="sample/student") 用于为 EJB bean 提供首选的 JNDI 名称。

要使用定义的 JNDI 名称进行查找,使用的代码是

Context c = new InitialContext();
studentBean = (studentlBean) c.lookup("sample/student");

如何在 EJB 3.2 中执行此操作,因为 EJB3.2 wildfly 8 应用程序服务器不支持 @LocalBinding。请帮忙。

【问题讨论】:

  • 在什么情况下必须进行 JNDI 查找而不是通过 @EJB 使用注入?
  • 比如这样的场景:类中需要EJB实例,但是这个类不能进行注入。可能是应用架构的问题,但在“现实生活”中这样的问题很常见。

标签: java ejb-3.0 jndi wildfly-8 ejb-3.2


【解决方案1】:

我们通过创建实用程序类和方法解决了这个问题,通过 Enterprise bean 类计算正确的 jndi 名称。在这个方法中,我们走在 jndi 树上,并检查它的每个实例。如果我们找到所需类的实例,则将其返回给所要求的类。据我所知,javaee 没有给出其他变体来通过 jndi 名称获取 EJB 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多