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é.