【问题标题】:Calling EJB3 from a Faces BackingBean从 Faces BackingBean 调用 EJB3
【发布时间】:2009-07-17 17:39:57
【问题描述】:

我有一个简单的 Web 应用程序,打包为 EAR,部署在 Glassfish 上。 EAR 有一个 Web 模块和一个 EJB 模块。 Web 模块有一个面孔页面和一个 ManagedBean。 Faces 页面上只有一个按钮,并且该按钮与 ManagedBean 中的一个方法相关联,单击该按钮确实会触发该方法。

托管 bean:

public class Bar {

    public Bar() {
    }

    @EJB StudentProfileFacade f;

    public void hello(ActionEvent evt) {
        System.out.println("*** f: " + f);
    }
}

EJB 没有被注入,我得到的错误是:

Exception attempting to inject Unresolved Ejb-Ref com.web.Bar/f@jndi: com.StudentProfileFacade@null@com.StudentProfileFacade@Session@null into class com.web.Bar

我需要做什么才能让 Web 模块找到 EJB 模块以及其中的 EJB?

【问题讨论】:

  • EJB 是否分配了全局 JNDI 名称?

标签: jsf ejb-3.0


【解决方案1】:

尝试进行 jndi 查找而不是 di。它可能看起来像:

private StudentProfileFacadeInt getStudentProfileFacade() {
 try {
  InitialContext ctx = new InitialContext();
  return (StudentProfileFacadeInt) ctx.lookup("<application_name>/StudentProfileFacade/local");
 } catch (Exception e) {
  e.printStackTrace();
  throw new RuntimeException("couldn't lookup StudentProfileFacade", e);
 }
}

其中StudentProfileFacadeIntStudentProfileFacade 的本地干扰。

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多