【发布时间】:2013-09-02 18:08:03
【问题描述】:
我正在使用 netbeans 开发企业 Web 应用程序,并使用 primefaces 和 mysql。但是,我遇到了一个由尝试将 ejb 注入 jsf 托管 bean 引起的问题。 在我的战争文件中,我有我的 .xhtml 和托管 bean。
loginBean.java(托管 bean)
package jmbean;
@ManagedBean(name="loginBean")
@SessionScoped
public class loginBean implements Serializable{
@EJB
private UserBeanLocal ub;
@Resource(name="jdbc/his")
private DataSource ds;
private String uname;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String login() throws NamingException {
boolean result;
try {
Connection con=ds.getConnection();
PreparedStatement ps=con.prepareStatement("select user, pass from userinfo where user= ? and pass= ?");
ps.setString(1, uname);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next()) // found
{
System.out.println(rs.getString("user"));
result=true;
}
else {
result=false;
}
} catch (SQLException ex) {
System.out.println("Error in login() -->" + ex.getMessage());
}
if (result=true) {
// get Http Session and store username
HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.setAttribute("username", uname);
return "home";
}
else {
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_WARN,
"Invalid Login!",
"Please Try Again!"));
return "login";
}
}
public String logout() {
HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.invalidate();
return "login";
}
/**
* Creates a new instance of loginBean
*/
public loginBean() {
}
}
在我的 ejb 文件中,我有我的会话 bean 和实体。
UserBean.java(会话 bean)
package sbean;
import javax.ejb.Stateless;
@Stateless
public class UserBean implements sbean.UserBeanLocal {
}
当我运行应用程序时,它给了我以下错误:
部署期间发生错误:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:开始: org.apache.catalina.LifecycleException:java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lsbean/UserBeanLocal;
对此有任何帮助吗?谢谢。
【问题讨论】:
-
似乎是部署错误。
sbean.UserBeanLocal接口未部署到服务器。 -
您是否创建并部署了 EJB Jar? JAR 是否在 JSF 项目中?
-
@PiotrGwiazda 为什么没有部署到服务器?
-
@Jessai 我怎么知道 JAR 是否在我的项目中?
-
签入项目的 WEB-INF/lib/ 文件夹。你必须手动完成,没有自动的事情。还要检查你的项目库,EJB Jar 也必须添加到那里。
标签: java netbeans primefaces