从Faces BackingBean调用EJB3

时间:2009-07-17 17:39:58

标签: jsf ejb-3.0

我有一个简单的Web应用程序,打包为EAR,部署在Glassfish上。 EAR具有Web模块和EJB模块。 Web模块有一个faces页面和一个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?

1 个答案:

答案 0 :(得分:0)

尝试进行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的本地干扰。