Tomcat上部署的WAR中的JPA功能

时间:2015-03-10 19:55:31

标签: java eclipse tomcat jpa war

我正在开展一个旨在允许用户将一些电影细节添加到数据库并显示现有电影列表的项目。 我在Eclipse中使用JPA创建了一个Dynamic Web Project来与远程数据库进行通信。当我在Eclipse IDE中运行项目时,所有这一切都正常工作,但是当我将它导出到WAR并将其部署在Tomcat服务器上时,JPA功能不再有效。抛出以下错误:

javax.servlet.ServletException: Servlet execution threw an exception
    servlets.AdminMenu.doGet(AdminMenu.java:31)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NoClassDefFoundError: javax/persistence/Persistence
    servlets.DBOperator.getFilmList(DBOperator.java:22)
    servlets.AddFilm.doGet(AddFilm.java:28)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    servlets.AdminMenu.doGet(AdminMenu.java:31)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

在导出和部署之前,我是否需要以某种方式打包persistence.xml等?

1 个答案:

答案 0 :(得分:4)

大多数JPA库只是原生于J2EE容器,如JBOSS,Glassfish等...... Tomcat是一个Servlet容器而不是J2EE容器。您需要包含要作为依赖项使用的JPA实现,并将其与WAR一起部署。