0

这是实体

  package com.ose.bookstore.model.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
 * Entity implementation class for Entity: Login
 *
 */
@Entity
public class Login implements Serializable {


    private static final long serialVersionUID = 1L;

    public Login() {
        super();
    }
    @Id
    @GeneratedValue
    private int loginId;
    private String userEmail;
    private String password;
    private String secPassword;



    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getSecPassword() {
        return secPassword;
    }
    public void setSecPassword(String secPassword) {
        this.secPassword = secPassword;
    }
    public int getLoginId() {
        return loginId;
    }
    public void setLoginId(int loginId) {
        this.loginId = loginId;
    }
}

这是控制器/测试类

package com.ose.bookstore.model.test;

import javax.ejb.EJB;
import javax.faces.bean.SessionScoped;

import com.ose.bookstore.model.ejb.LoginDao;
import com.ose.bookstore.model.entity.Login;

/**
 * @author nishant
 * 
 */
@SessionScoped
public class LoginTest1 {

    @EJB
    private static LoginDao loginDao;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Login login = new Login();
            login.setLoginId(2);
        login.setPassword("asdf");
        login.setSecPassword("asdfsadF");
        login.setUserEmail("email");
        loginDao.writeToDb(login);
    }
}

这是EJB类

package com.ose.bookstore.model.ejb;

import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.ose.bookstore.model.entity.Login;

/**
 * @author nishant
 *
 */
@Remote
@Stateless
public class LoginDao {

    public LoginDao() {
        super();
        // TODO Auto-generated constructor stub
    }
    @PersistenceContext
    private EntityManager entityManager; 
    public void writeToDb(Login login){
        entityManager.persist(login);
    }

}

我收到此错误 loginDao.writeToDb(login);

com.ose.bookstore.model.test.LoginTest1.main 的线程“main”java.lang.NullPointerException 中的异常 LoginTest1 是 Controller/Test 类的类名

4

2 回答 2

1

您需要在Application 客户端容器中执行客户端代码。否则 @EJB 本地注入不起作用(您的测试代码像 javastandalone 一样执行,但它需要一个注入 EJB 的容器)

于 2013-09-06T12:26:12.303 回答
0

您需要创建一个暴露业务方法的远程/本地接口。

该接口将由 ejb 客户端应用程序使用。

如果 ejb 客户端与要部署 ejb 会话 bean 的环境相同,请使用 @Local 注释。

如果 ejb 客户端位于要部署 ejb 会话 bean 的不同环境中,请使用 @Remote 注释。

@Remote
public interface LoginDaoRemote {
   public void writeToDb(Login login);
}

@Stateless
public class LoginDao implements LoginDaoRemote {

@Override
public void writeToDb(Login login){
    entityManager.persist(login);
  }
}
于 2013-09-06T10:49:22.397 回答