[RESOLVIDO]Conexão com banco de dados MySQL não completa

Galera, a minha conexão com o banco de dados não completa, eu já tentei resolver o erro de todas as formas que conheço, mas não consigo.

Eu criei a seguinte página HTML (add-contact.html):

<!DOCTYPE html>
<html>
	<head>
	<meta charset="ISO-8859-1">
		<title>Adicionar Contato</title>
	</head>
	
	<body>
		<form action = "addContact">
			Name: <input type="text" name="nome" /><br />
			E-mail: <input type="text" name="email" /><br />
			Adress: <input type="text" name="endereco"><br />
			Birth date: <input type="text" name="dataNascimento" /><br />
			<input type="submit" value="Gravar"/> <input type="reset" value="Limpar">
		</form>
	</body>
</html>

Esse é o código da Servlet que vai tratar da requisição:

@WebServlet("/addContact")
public class AdicionaContatoServlet extends HttpServlet {
	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Calendar dataNascimento = null;
		
		PrintWriter out = response.getWriter();
		
		String parametroNome = request.getParameter("nome");
		String paramentroEmail = request.getParameter("email");
		String parametroEndereco = request.getParameter("endereco");
		//String paramentroDataNascimento = request.getParameter("dataNascimento");
		String dataEmTexto = request.getParameter("dataNascimento");
		try {
			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(date);
		} catch (ParseException e) {
			out.println("Erro durante conversão");
			return; // finalizar execução do método
		}
		
		Contato contato = new Contato();
		contato.setNome(parametroNome);
		contato.setEmail(paramentroEmail);
		contato.setEndereco(parametroEndereco);
		contato.setDataNascimento(dataNascimento);
		
		ContatoDAO contatoDAO = new ContatoDAO();
		contatoDAO.insert(contato);
		
		out.println("<html>");
		out.println("<body>");
		out.println("Contato " + contato.getNome() + " adicionado com sucesso.");
		out.println("</body>");
		out.println("</html>");
	}
}

Dentro do construtor de ContatoDAO tem o seguinte código:

public ContatoDAO() {
		conn = new ConnectionFactory().getConnection();
}

E esse é a classe ConnectionFactory:

[code]public class ConnectionFactory {
private String usuario = “root”;
private String senha = “barros1996”;
private String url = “jdbc:mysql://localhost/fj21”;
private Connection connection;

public Connection getConnection() {
	try {
		System.out.println("Connecting...");
		connection = DriverManager.getConnection(url, usuario, senha);
		System.out.println("Connected.");
		return connection;
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(null, "Um erro ocorreu.");
		throw new RuntimeException(e.getMessage());
	}
}

}[/code]

Quando eu entro na página add-contact.html, eu preencho todos os dados do form, mas quando eu envio os dados a conexão não completa, a página só fica carregando e no console do Eclipse aparece só ‘Connecting…’ (do método getConnection()), ou seja, ele não passo desse trecho do método getConnection():

connection = DriverManager.getConnection(url, usuario, senha);

Na seguinte classe, sem rodar pelo servidor, roda perfeitamente:

public class Main {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(1996, 01, 07);
		
		Contato contato = new Contato();
		contato.setNome("Diego");
		contato.setEmail("diego@gmail.com");
		contato.setEndereco("Não definido");
		contato.setDataNascimento(Calendar.getInstance());
		
		ContatoDAO contatoDAO = new ContatoDAO();
		contatoDAO.insert(contato);
	}

}

Alguém tem ideia do que seja?

@EDIT
Descobri o problema, era o Class.forName() que eu omiti no metódo getConnection().

Minha omissão foi proposital, eu havia lido na apostila de Caelum que o Class.forName() não era mais necessário, mas não li a parte(ou esqueci) em que eles haviam dito que em alguns servidores, como o Tomcat(meu caso), o Class.forName() é necessário, por isso a conexão só não acontecia quando eu tentava executar no servidor.