我有一个简单的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?
答案 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);
}
}
其中StudentProfileFacadeInt
是StudentProfileFacade
的本地干扰。