1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro de gravar objetos utilizando Dao em um Servlet

Galera bom dia,

Estou com um problema para gravar objetos em um servlet (controller) utilizando a persistência jpa. Aparece o seguinte erro:

*

ago 19, 2014 10:47:04 AM org.apache.catalina.core.AprLifecycleListener init
INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre8\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\app\wellingtonjc\product\12.1.0\dbhome_3\bin;C:\app\wellingtonjc\product\12.1.0\dbhome_2\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\php;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\MySQL\MySQL Utilities 1.4.3\;C:\Program Files (x86)\MySQL\MySQL Utilities 1.4.3\Doctrine extensions for PHP\;.
ago 19, 2014 10:47:04 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Projeto1' did not find a matching property.
ago 19, 2014 10:47:04 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ExemploHibernate' did not find a matching property.
ago 19, 2014 10:47:04 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Projeto2' did not find a matching property.
ago 19, 2014 10:47:04 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Projeto3' did not find a matching property.
ago 19, 2014 10:47:05 AM org.apache.coyote.http11.Http11Protocol init
INFORMAÇÕES: Initializing Coyote HTTP/1.1 on http-80
ago 19, 2014 10:47:05 AM org.apache.catalina.startup.Catalina load
INFORMAÇÕES: Initialization processed in 1548 ms
ago 19, 2014 10:47:05 AM org.apache.catalina.core.StandardService start
INFORMAÇÕES: Starting service Catalina
ago 19, 2014 10:47:05 AM org.apache.catalina.core.StandardEngine start
INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/6.0.41
ago 19, 2014 10:47:06 AM org.apache.coyote.http11.Http11Protocol start
INFORMAÇÕES: Starting Coyote HTTP/1.1 on http-80
ago 19, 2014 10:47:06 AM org.apache.jk.common.ChannelSocket init
INFORMAÇÕES: JK: ajp13 listening on /0.0.0.0:8085
ago 19, 2014 10:47:06 AM org.apache.jk.server.JkMain start
INFORMAÇÕES: Jk running ID=0 time=0/69  config=null
ago 19, 2014 10:47:06 AM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 1550 ms
ago 19, 2014 10:47:07 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet ServletUsuario threw exception
java.lang.ClassNotFoundException: javax.persistence.Persistence
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at br.com.caelum.classes.UsuarioDao.salvar2(UsuarioDao.java:24)
    at br.com.caelum.classes.ServletUsuario.service(ServletUsuario.java:30)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    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:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)*

O cenário que tenho é um seguinte: 1 classe Usuario, 1 classe de persistência Dao Chamando UsuarioDao, 1 servlet utilizado como controller ServletUsuario.

1 classe Usuario

@Entity
@Table(name="usuarios")
public class Usuario {

    public Usuario(){};

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @Column(name="nome")
    private String nome;

    @Column(name="login")
    private String login;

    @Column(name="senha")
    private String senha;

    @Transient
    private String confirmSenha;

    @Override
    public String toString() {
        return "Usuario [nome=" + nome + ", login=" + login + "]";
    }

    public int getId(){
        return this.id;
    }

    public void setId(int id){
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getConfirmSenha() {
        return confirmSenha;
    }

    public void setConfirmSenha(String confirmSenha) {
        this.confirmSenha = confirmSenha;
    }

}

1 classe de persistência Dao Chamando UsuarioDao

public class UsuarioDao {

    private EntityManager em;

    public UsuarioDao() {}

    public void salvar(Usuario u){
        this.em.persist(u);
        this.em.close();
    }

    public void salvar2(){
        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("mmbrasil");
            EntityManager em = emf.createEntityManager();

            Usuario u = new Usuario();
            u.setLogin("TesteLoginTesteee");
            u.setNome("Testeweto");
            u.setSenha("123456");

            EntityTransaction tx = em.getTransaction();
            tx.begin();
            em.persist(u);
            tx.commit();
            em.close();            
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

1 servlet utilizado como controller ServletUsuario.

public class ServletUsuario extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletUsuario() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
     */
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            UsuarioDao dao = new UsuarioDao();
            dao.salvar2();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

Quando eu chamo o Dao em uma classe de teste com o nome TesteUsuario, as informações são gravadas normalmente mas quando chamo o mesmo Dao no servlet o erro acontece. Já olhei o arquivo de persistence.xml e não identifiquei nada.

public class TesteUsuario {

    public TesteUsuario() {}

    public static void main(String[] args) {
        UsuarioDao dao = new UsuarioDao();
        dao.salvar2();
    }

}

Arquivo de persistence.xml

<?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_2_0.xsd"
    version="2.0">

    <persistence-unit name="mmbrasil" transaction-type="RESOURCE_LOCAL">

        <!-- provedor/implementacao do JPA -->
        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <!-- entidade mapeada -->
        <class>br.com.caelum.classes.Usuario</class>

        <properties>
            <!-- dados da conexao -->
            <property name="hibernate.connection.username" value="root"/>
             <property name="hibernate.connection.password" value="root"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mmbrasil"/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>

    </persistence-unit>
</persistence>

Se vc's puderem me ajudar eu ficaria muito grato!!! Tem algum detalhe que não estou conseguindo identificar.

Agradeço desde já!

Wellington Jesus

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags servlets dao hibernate jpa ou faça a sua própria pergunta.