Javaee,postgresql和tomcat

时间:2015-08-09 09:54:18

标签: java postgresql tomcat servlets

我正在研究javaee,我正在使用tomcat和postgres在ubuntu服务器上执行项目。 当我尝试执行servlet时,出现此错误:

java.lang.ClassNotFoundException: javax.persistence.EntityTransaction
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
    ejemploLoginMVC.Modelo.Conexion.crearla(Conexion.java:50)
    ejemploLoginMVC.Controller.nuevoUsuario.doPost(nuevoUsuario.java:47)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

usuario.java

@Entity

public class Usuario {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id_Usuario;
    @Column(nullable=false)
    private String nick;
    @Column(nullable=false)
    private String password;

    public String getNick() {
        return nick;
    }
    public void setNick(String nick) {
        this.nick = nick;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }



}

Conexion.java

public class Conexion {

    private static EntityManagerFactory emf;
    private static EntityManager em;
    private static EntityTransaction tx;

    String nick;
    String pass;
    public Conexion(String nick,String pass){
        this.nick=nick;
        this.pass=pass;
    }

    @BeforeClass
    public static void initEntityManager() throws Exception {
        emf = Persistence.createEntityManagerFactory("usuarios-unit");
        em = emf.createEntityManager();
    }

    @AfterClass
    public static void closeEntityManager() throws SQLException {
        if (em != null) em.close();
        if (emf != null) emf.close();
    }

    @Before
    public void initTransaction() {
        tx = em.getTransaction();
    }

    public void crearla() throws Exception{

        Usuario usuario=new Usuario();
        usuario.setNick(nick);
        usuario.setPassword(pass);

        tx.begin();
        em.persist(usuario);
        tx.commit();

        em.close();
        emf.close();
    }

}

nuevoUsuario.java(servlet)

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=UTF-8");

String nick = request.getParameter("nick");
String pass = request.getParameter("pass");
Conexion conexion= new Conexion(nick,pass);
try {
    conexion.crearla();
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
try(PrintWriter out =response.getWriter()){

    out.println("<!DOCTYPE html>");
    out.println("<html>");
    out.println("<head>");
    out.println("</head>");
    out.println("<body>");
    out.println("<p>USUARIO:"+nick+"</p>");
    out.println("<p>PASSWORD:"+pass+"</p>");

    out.println("</body>");
    out.println("</html>");

}

我无法找到错误,我添加到项目中:postgresql-jdbc4.jar,javaee-api-6.0,tomcat jars,tomee jars等

谢谢:D

2 个答案:

答案 0 :(得分:0)

总结对问题的评论:

抛出ClassNotFoundException因为无法找到JPA相关的类。 Tomcat没有提供开箱即用的JPA支持。要么使用TomEE,要么将JPA相关(可能还有)JAR添加到tomcat的lib文件夹(在您的情况下为/ usr / share / tomcat7 / lib),或者在部署WAR文件时将它们添加到Web应用程序li​​b文件夹中。 / p>

请记住,如果将JAR添加到tomcat的lib文件夹,它们将由您部署的所有应用程序共享。

有关如何组成Web /企业应用程序的概述,请参阅http://docs.oracle.com/javaee/7/tutorial/packaging.htm,例如。

答案 1 :(得分:0)

您必须将Hibernate或其他JPA实现添加到classPath或...使用Spring。