DAO não está funcionando no Servlet

4 respostas
aurelio_silva

Seguinte,

Estou participando do fj21, estudando travei no seguinte problema:

Tenho um UsuarioDAO e um servlet AdicionarUsuario. Quando executo a servlet com o seguinte código,
ela funciona…

package br.com.fabrica.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.fabrica.dao.UsuarioDAO;
import br.com.fabrica.usuarios.TipoUsuario;
import br.com.fabrica.usuarios.Usuario;

public class AdicionarUsuario extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		Usuario usuario = new Usuario();

		usuario.setLogin("login");
		usuario.setSenha("senha");
		usuario.setNome("nome");
		usuario.setCpf("cpf");
		usuario.setTipo(TipoUsuario.ADMINISTRADOR);		
		
		try {
			UsuarioDAO dao = new UsuarioDAO();
			dao.adicionar(usuario);
		} catch (SQLException e) {
			//Realizando um wrapper da exceção antes de lançar
			throw new ServletException(e);
		}
		*/
		
		PrintWriter pw = response.getWriter();
		
		pw.println("<html>");
		pw.println("funciona " + request.getParameter("login"));
		pw.println("</html>");
		
		
	}
}

Isso prova que ela está registrada e mapeada bonitinho e pegou o parâmetro…
Mas com o seguinte já não funciona, estou criando um usuario com atributos qualquer…

package br.com.fabrica.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.fabrica.dao.UsuarioDAO;
import br.com.fabrica.usuarios.TipoUsuario;
import br.com.fabrica.usuarios.Usuario;

public class AdicionarUsuario extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		Usuario usuario = new Usuario();

		usuario.setLogin("login");
		usuario.setSenha("senha");
		usuario.setNome("nome");
		usuario.setCpf("cpf");
		usuario.setTipo(TipoUsuario.ADMINISTRADOR);		
		
		try {
			UsuarioDAO dao = new UsuarioDAO();
			dao.adicionar(usuario);
		} catch (SQLException e) {
			//Realizando um wrapper da exceção antes de lançar
			throw new ServletException(e);
		}
		
		/*
		PrintWriter pw = response.getWriter();
		
		pw.println("<html>");
		pw.println("funciona " + request.getParameter("login"));
		pw.println("</html>");
		*/
		
	}
	
}

O erro é o seguinte:

03/08/2008 21:27:42 org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet AdicionarUsuario threw exception

java.sql.SQLException

at br.com.fabrica.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:24)

at br.com.fabrica.dao.UsuarioDAO.(UsuarioDAO.java:20)

at br.com.fabrica.servlet.AdicionarUsuario.service(AdicionarUsuario.java:32)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188 )

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108 )

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)

at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528 )

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)

at java.lang.Thread.run(Unknown Source)

Bom, então o erro deveria estar no DAO, certo?
Fiz o seguinte teste, copiei a lógica para o main e funciona!

package br.com.fabrica.principal;

import java.sql.SQLException;

import javax.servlet.ServletException;

import br.com.fabrica.dao.UsuarioDAO;
import br.com.fabrica.usuarios.TipoUsuario;
import br.com.fabrica.usuarios.Usuario;

public class Principal {
	public static void main(String[] args) throws SQLException {
		
		Usuario usuario = new Usuario();

		usuario.setLogin("login");
		usuario.setSenha("senha");
		usuario.setNome("nome");
		usuario.setCpf("cpf");
		usuario.setTipo(TipoUsuario.ADMINISTRADOR);		
		
		UsuarioDAO dao = new UsuarioDAO();
		dao.adicionar(usuario);

	}
}

O problema parece estar em utilizar o DAO dentro da servlet, não consegui ver o motivo…
Que merda estou fazendo?

Bom este é meu primeiro post, ainda sou novato, mais o que estiver em meu alcance, pode contar comigo…
até.

4 Respostas

L

Eu tenho um palpite para o que pode estar errado, mas pra ter certeza, preciso ver a stack completa da exceção. Tem como vc colocar aqui?

aurelio_silva

Desculpe minha ignorância, mais só consegui passar o que saiu no console. O stack completo deveria sair no Erro log do eclipse, certo? Mais não sai nada, estou procurando…

Alessandro_Lazarotti

Seu driver JDBC esta nas bibliotecas de seu conteiner web?

aurelio_silva

Perfeito foi isso…copiei meu "mysql-connector-java-5.1.6-bin.jar" para WEB-INF->lib e adicionei no Path. Não me dei conta que é o servlet conteiner que vai instânciar a classe…É bom acontecer essas coisas, assim aprende.
Esse é um ponto importante, imagino os problemas que dever acontecer por detalhes como esse…

Valeu Alessandro, valeu lavh.

Criado 3 de agosto de 2008
Ultima resposta 4 de ago. de 2008
Respostas 4
Participantes 3