oi pessoal… estou com problema na execução de uma página JSF com JPA… o q ocorre é q quando eu executo o código jpa como uma stand alone app td funciona mas quando eu executo do jsf dá erro…
espero q alguém saiba o q pd tá ocorrendo pq sinceramente eu não faço idéia…
lá vai…
eu tenho a classe JpaUtil q me retorna o entitymanager
public class JpaUtil {
private static JpaUtil me;
private EntityManagerFactory factory;
private JpaUtil () {
factory = Persistence.createEntityManagerFactory("pu1");
}
public static JpaUtil getInstance() {
if (me == null) {
me = new JpaUtil();
}
return me;
}
public EntityManager createEntityManager() {
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
return em;
}
}
daí eu tenho a classe FirstJsfandjpa q é meu managedBean
public class FirstJsfandjpa {
private List<People> people;
public FirstJsfandjpa() {
EntityManager em = (EntityManager) JpaUtil.getInstance().createEntityManager();
people = em.createQuery("select pl from People pl").getResultList();
em.getTransaction().commit();
em.close();
}
public List<People> getPeople() {
return people;
}
public void setPeople(List<People> people) {
this.people = people;
}
}
dái eu tenho a classe Execute q me lista todas as pessoas… quando eu rodo esse código td funciona perfeitamente
public class Execute {
List<People> people = new FirstJsfandjpa().getPeople();
public static void main(String[] args) {
List<People> people = new FirstJsfandjpa().getPeople();
for (People pl: people) {
System.out.println(pl.getName());
}
}
}
mas se eu rodar da página JSF dá erro.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSF and JPA example</title>
</head>
<body>
<f:view>
<h1><h:outputText value="People listed" /></h1>
<h:dataTable var="people" value="#{FirstJsfandjpa.people}">
<h:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{people.name}" />
</h:column>
</h:dataTable>
</f:view>
</body>
</html>
quando eu acesso esta página dá erro e parece q o erro é na classe JpaUtil… mas se eu consigo rodar o programa da classe Execute então JpaUtil deve tá certinho e eu não sei pq esse erro ocorre na página JSF:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: javax/persistence/Persistence
br.com.devmedia.entity.JpaUtil.(JpaUtil.java:13)
br.com.devmedia.entity.JpaUtil.getInstance(JpaUtil.java:18)
br.com.devmedia.faces.FirstJsfandjpa.(FirstJsfandjpa.java:16)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:185)
com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105)
com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:368)
com.sun.faces.mgbean.BeanManager.create(BeanManager.java:222)
com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
org.apache.el.parser.AstValue.getValue(AstValue.java:107)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
javax.faces.component.UIData.getValue(UIData.java:614)
javax.faces.component.UIData.getDataModel(UIData.java:1129)
javax.faces.component.UIData.setRowIndex(UIData.java:451)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813)
javax.faces.component.UIData.encodeBegin(UIData.java:967)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:928)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.