Boa tarde meus caros amigos, estou aqui com uma dúvida que é o seguinte. Eu estou tentando puxar uma lista de dados do banco, porém estou obtendo o seguinte erro no console:
31/08/2009 11:40:56 com.sun.faces.application.ApplicationAssociate createAndMaybeStoreManagedBeans
SEVERE: JSF1001: Managedbean productMB could not be created.
31/08/2009 11:40:56 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/pages/listProducts.xhtml]
javax.faces.FacesException: javax.faces.FacesException: Cant instantiate class: br.com.loja.ManagedBean.ProductMB.. No Persistence provider for EntityManager named conexao
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:541)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
at org.apache.el.parser.AstValue.getValue(AstValue.java:103)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at javax.faces.component.UIData.getValue(UIData.java:582)
at javax.faces.component.UIData.getDataModel(UIData.java:1063)
at javax.faces.component.UIData.setRowIndex(UIData.java:417)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:785)
at javax.faces.component.UIData.encodeBegin(UIData.java:879)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.FacesException: Cant instantiate class: br.com.loja.ManagedBean.ProductMB.. No Persistence provider for EntityManager named conexao
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:282)
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:531)
... 35 more
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named conexao
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
at br.com.loja.util.JPAUtil.<init>(JPAUtil.java:19)
at br.com.loja.util.JPAUtil.getInstance(JPAUtil.java:25)
at br.com.loja.dao.ProductDAO.getAllProducts(ProductDAO.java:45)
at br.com.loja.ManagedBean.ProductMB.<init>(ProductMB.java:14)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:277)
... 36 more
31/08/2009 11:40:56 com.sun.faces.application.ApplicationAssociate createAndMaybeStoreManagedBeans
SEVERE: JSF1001: Managedbean productMB could not be created.
aqui está meu persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="conexao" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/consultas.xml</mapping-file>
<class>br.com.entidades.People</class>
<class>br.com.entidades.PeopleInfo</class>
<class>br.com.entidades.Address</class>
<class>br.com.entidades.Group</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="111111" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/teste" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>
</persistence-unit>
aqui está minha JPAUtil
package br.com.loja.util;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class JPAUtil {
private static JPAUtil me;
private EntityManagerFactory emf;
private JPAUtil() {
emf = Persistence.createEntityManagerFactory("conexao");
}
public static JPAUtil getInstance() {
if (me == null) {
me = new JPAUtil();
}
return me;
}
public EntityManager getEntityManager() {
EntityManager toReturn = emf.createEntityManager();
toReturn.getTransaction().begin();
return toReturn;
}
@SuppressWarnings("unchecked")
public <T> List<T> getList(Class<T> classToCast, String jpql,
Object... parameters) {
List toReturn = null;
EntityManager em = getEntityManager();
Query qr = em.createQuery(jpql);
for (int i = 0; i < parameters.length; i++) {
qr.setParameter(i + 1, parameters[i]);
}
toReturn = qr.getResultList();
em.getTransaction().commit();
em.close();
return toReturn;
}
public <T> T getEntity(Class<T> entityClass, Serializable pk) {
EntityManager em = getEntityManager();
T toReturn = em.find(entityClass, pk);
em.getTransaction().commit();
em.close();
return toReturn;
}
}
aqui minha entidade product
package br.com.loja.entity;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity(name="product")
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="id")
private Integer id;
@Column(name="\"name\"")
private String name;
@OneToMany(mappedBy="product",cascade=CascadeType.ALL)
private List<Sell> sellOfProduct = new LinkedList<Sell>();
public Product() {
}
public Product(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public void addSell(Sell sell){
this.addSell(sell);
sell.setProduct(this);
}
public void setId(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setSellOfProduct(List<Sell> sellOfProduct) {
this.sellOfProduct = sellOfProduct;
}
public List<Sell> getSellOfProduct() {
return sellOfProduct;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Product other = (Product) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
aqui está o meu ProductDAO.
package br.com.loja.dao;
import java.util.List;
import javax.persistence.EntityManager;
import br.com.loja.entity.Product;
import br.com.loja.util.JPAUtil;
public class ProductDAO {
public ProductDAO() {
}
public Integer addProduct(Product prod) {
EntityManager em = JPAUtil.getInstance().getEntityManager();
em.persist(prod);
em.getTransaction().commit();
em.close();
return prod.getId();
}
public void removeProduct(Product prod) {
EntityManager em = JPAUtil.getInstance().getEntityManager();
prod = em.getReference(Product.class, prod.getId());
em.remove(prod);
em.getTransaction().commit();
em.close();
}
public void updateProduct(Product prod) {
EntityManager em = JPAUtil.getInstance().getEntityManager();
em.merge(prod);
em.getTransaction().commit();
em.close();
}
public Product getProduct(int idProduct) {
return JPAUtil.getInstance().getEntity(Product.class, idProduct);
}
public List<Product> getAllProducts() {
return JPAUtil.getInstance().getList(Product.class,
"select prod from product prod");
}
}
e aqui esta meu ManagedBean
package br.com.loja.ManagedBean;
import java.util.List;
import br.com.loja.dao.ProductDAO;
import br.com.loja.entity.Product;
public class ProductMB {
private List<Product> products;
private final ProductDAO dao = new ProductDAO();
public ProductMB() {
products = dao.getAllProducts();
}
public void setProducts(List<Product> products) {
this.products = products;
}
public List<Product> getProducts() {
if (products == null){
products = dao.getAllProducts();
}
return products;
}
}
Alguém poderia me dar uma luz??