Servlet não acha conexão com driver MySql

Estou usando Eclipse + Tomcat6 integrado.

O código do meu servlet segue abaixo, quando o testo num navegador recebo um:

java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21 br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:13) br.com.caelum.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:20) br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:64) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Daí coloquei um main() no Servlet com o código de conexão com o banco e o rodei como um arquivo java normal (Shift + Alt + X + J) no Eclipse e funcionou perfeitamente, gerando a saída esperada. O que pode estar acontecendo?

[code]package br.com.caelum.agenda.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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

import br.com.caelum.jdbc.ConnectionFactory;
import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;

/**

  • Servlet implementation class AdicionaContatoServlet
    */
    public class AdicionaContatoServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public static void main(String[] args) throws SQLException {
    Connection connection = new ConnectionFactory().getConnection();
    System.out.println(“Conexão aberta!”);
    connection.close();
    }
    /**

    • @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
      */
      protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // busca o writer
      PrintWriter out = response.getWriter();

      // buscando os parâmetros no request
      String nome = request.getParameter(“nome”);
      String endereco = request.getParameter(“endereco”);
      String email = request.getParameter(“email”);
      String dataEmTexto = request.getParameter(“dataNascimento”);
      Calendar dataNascimento = null;

      // fazendo a conversão da data
      try {
      Date date = new SimpleDateFormat(“dd/MM/yyyy”).parse(dataEmTexto);
      dataNascimento = Calendar.getInstance();
      dataNascimento.setTime(date);
      } catch (ParseException e) {
      out.println(“Erro de conversão da data”);
      return; //para a execução do método
      }

      // monta um objeto contato
      Contato contato = new Contato();
      contato.setNome(nome);
      contato.setEndereco(endereco);
      contato.setEmail(email);
      contato.setDataNascimento(dataNascimento);

      // salva o contato
      ContatoDAO dao = new ContatoDAO();
      dao.adiciona(contato);

      // imprime o nome do contato que foi adicionado
      out.println("");
      out.println("");
      out.println(“Contato " + contato.getNome() + " adicionado com sucesso”);
      out.println("");
      out.println("");
      }

}
[/code]

O erro acontece exatamente aqui:

[code]package br.com.caelum.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
public Connection getConnection() {
System.out.println(“Conectando ao banco”);
try {
return DriverManager.getConnection(“jdbc:mysql://localhost/fj21”, “root”, “123”);
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
}[/code]

A lib do driver mysql tem q estar no diretório padrão de libs de um aplicativo WEB, que é /WEB-INF/lib

Era isso mesmo, obrigado victorcosta :smiley:

Está nos meus planos aprender jQuery, visitarei seu blog dentro em breve :wink: