Jsf 从FacesBackingBean调用EJB3
我有一个简单的web应用程序,打包成EAR,部署在Glassfish上。 EAR有一个web模块和一个EJB模块。 web模块有一个faces页面和一个ManagedBean。 Faces页面上只有一个按钮,该按钮绑定到ManagedBean中的一个方法,单击该按钮确实会触发该方法 托管bean:Jsf 从FacesBackingBean调用EJB3,jsf,ejb-3.0,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 hell
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?尝试执行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);
}
}
private StudentProfileFacadeInt getStudentProfileFacade(){
试一试{
InitialContext ctx=新的InitialContext();
return(StudentProfileFacadeInt)ctx.lookup(“/studentprofilefacadein/local”);
}捕获(例外e){
e、 printStackTrace();
抛出新的RuntimeException(“无法查找StudentProfileFacade”,e);
}
}
其中,
StudentProfileFacadeInt
是studentprofilefacadein
的本地接口,EJB是否分配了全局JNDI名称?