Estou fazendo um projeto jpa em web, utilizando o eclipse wtp 3.3 e o mysql 5 e jpa para persistência de dados. A estrutura do projeto ficou assim:
LojaONLINE
src
WebContent
META-INF
persistence.xml
ao executar o projeto ocorre o seguinte erro:
javax.persistence.PersistenceException: No Persistence provider for EntityManager named pu1
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at br.com.lojaonline.Command.BaseDao.(BaseDao.java:15)
at br.com.lojaonline.Action.ClienteAction.execute(ClienteAction.java:34)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
o arquivo persistence está no projeto:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="1.0">
<persistence-unit name="pu1">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.lojaonline.Form.ClienteForm</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sisracao"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="admin" />
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
e quando eu chamo o projeto ele parece não encontrar o persistence.xml, será que tem algum problema com a estrutura montada e não está conseguindo achar na própria pasta onde foi criado o projeto no META-INF?
eu chamo ele por esse trecho de código:
try{
ClienteForm cliente = (ClienteForm) form;
System.out.println(cliente.getNome());
request.setAttribute("nome", cliente.getNome().toString());
BaseDao<ClienteForm> dao = new BaseDao<ClienteForm>();
ClienteForm cli = new ClienteForm();
cli.setNome("jpaweb");
dao.create(cli);
}catch(Exception ex){
ex.printStackTrace();
return mapping.findForward("failure");
}
return mapping.findForward("sucess");
}
a classe dao chamada:
public class BaseDao<T> {
private static EntityManagerFactory emf;
private EntityManager em;
private EntityTransaction tx;
public BaseDao() {
emf = Persistence.createEntityManagerFactory("pu1");
em = emf.createEntityManager();
tx = em.getTransaction();
}
public boolean create(T obj) {
em.getTransaction();
try {
tx.begin();
em.persist(obj);
em.getTransaction();
tx.commit();
em.close();
return true;
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
return false;
}
}
}
Alguém tem idéia do que poderia ser?
