java - 将 ejb 注入(inject) jsf 托管 bean 时出错

标签 java netbeans primefaces

我正在使用 netbeans 开发企业 Web 应用程序,并使用 primefaces 和 mysql。但是,我遇到了一个问题,该问题是由尝试将 ejb 注入(inject) jsf 托管 bean 引起的。 在我的 war 文件中,我有我的 .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 文件中,我有我的 session bean 和实体。

UserBean.java( session bean)

package sbean;

import javax.ejb.Stateless;

@Stateless

public class UserBean implements sbean.UserBeanLocal {

}

当我运行应用程序时,出现以下错误:

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lsbean/UserBeanLocal;

有什么帮助吗?谢谢。

最佳答案

  1. 停止您的服务器。
  2. 右键单击 project-jar(项目浏览器)
  3. 清理和构建。
  4. 右键单击项目 war (项目浏览器)
  5. 清理和构建。
  6. 运行您的项目。 我希望这能解决您的问题

关于java - 将 ejb 注入(inject) jsf 托管 bean 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578720/

相关文章:

java Fork/Join 池、ExecutorService 和 CountDownLatch

JSF FacesContext#addMessage 不显示

c++ - 'for each' 不是 std 的成员。已启用 C++11 支持

validation - 如何防止取消对话框中的表单验证?

jsf - Primefaces BlockUI 不工作

java - MUnit 模拟 : Which Attribute failed verification?

java - 如何在 fragment 中使用ListView和onClickListener?

java - 为什么这个break语句没有按预期工作?

java - 将文件 exe 包含到 Project Netbeans Java 中

java - 功能测试 (Jellytools) 不在 netbeans 平台上启动