Servidor Parando - Java Web

Olá gente,

Estou desenvolvendo um sistema de gerenciamento de associações (Trabalho Final de uma disciplina do curso), usando Java Web. O servidor funciona beleza até eu tentar adicionar, remover ou alterar alguma coisa no banco de dados. Ele simplesmente para. Toda vez. E é sempre quando tento fazer isso. Por favor, quem souber a causa disso, me ajuda aí.

Manda o erro e o código dos mesmos.

Não apresenta erro. O servidor apenas para. Não enviei as classes do trabalho porque são muitas, mas tem essas outras aqui, que também ocorre a mesma coisa.

web.xml

<?xml version="1.0" encoding="UTF-8"?> fj21-agenda index.html index.htm index.jsp default.html default.htm default.jsp java.lang.Exception /erro.html
<!DOCTYPE html>
Adiciona Contatos

Adidiona Contatos


Nome:
E-mail:
Endereço:
Data Nascimento:

Classe AdicionaContatoServelt

package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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

import br.com.caelum.jbdc.dao.ContatoDao;
import br.com.caelum.jdbc.modelo.Contato;

@SuppressWarnings(“serial”)
@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	PrintWriter out = response.getWriter();
	
	String nome= "Luis";//request.getParameter("nome");
	String endereco ="Luis"; //request.getParameter("endereco");
	String email = "Luis";//request.getParameter("email");
	String dataEmTexto = "12/01/1997";//request.getParameter("dataNascimento");
	
	Calendar dataNascimento = null;
	
	try{
		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
		dataNascimento = Calendar.getInstance();
		dataNascimento.setTime(date);
	}catch(java.text.ParseException e){
		out.println("Erro na conversão da data");
		return;
	}
	
	Contato contato = new Contato();
	contato.setNome(nome);
	contato.setEmail(email);
	contato.setEndereco(endereco);
	contato.setDataNascimento(dataNascimento.getTimeInMillis());
	contato.setId(1);
	
	
	ContatoDao daoContato = new ContatoDao();
	daoContato.adiciona(contato);
	
	
	
	out.println("<html>");
	out.println("<head>");
	out.println("<title>êhhhh</title>");
	out.println("</head>");
	out.println("<body>");
	out.println("Contato "+ contato.getNome()+" adicionado com sucesso.");
	out.println("</body>");
	out.println("</html>");
}

}

Classe Contato

package br.com.caelum.jdbc.modelo;

import java.util.Calendar;

public class Contato {
private long id;
private String nome;
private String email;
private String endereco;
private long dataNascimento;

public long getId() {
	return id;
}
public void setId(long id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
public String getEndereco() {
	return endereco;
}
public void setEndereco(String endereco) {
	this.endereco = endereco;
}
public long getDataNascimento() {
	return dataNascimento;
}
public void setDataNascimento(long dataNascimento) {
	this.dataNascimento = dataNascimento;
}

Classe ContatoDao

package br.com.caelum.jbdc.dao;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class ContatoDao {

public void adiciona(Contato contato){
	Connection connection= ConnectionFactory.getConexao();
	String sql= "insert into contatos (nome,email,endereco,dataNascimento) values(?,?,?,?)";
	try{
		PreparedStatement stmt= connection.prepareStatement(sql);
		
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getEmail());
		stmt.setString(3, contato.getEndereco());
		stmt.setLong(4, contato.getDataNascimento());
		
		stmt.execute();
		stmt.close();
	}catch(SQLException e){
		throw new RuntimeException(e);
	}
	
}

public List<Contato> getLista(){
	Connection connection= ConnectionFactory.getConexao();
	try{
		
		PreparedStatement stmt = connection.prepareStatement("select *from contatos");
		ResultSet rs= stmt.executeQuery();
		List<Contato> contatos = new ArrayList<Contato>();
		while(rs.next()){
			
			Contato contato= new Contato();
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			
			Calendar data= Calendar.getInstance();
			data.setTime(rs.getDate("dataNascimento"));
			contato.setDataNascimento(data.getTimeInMillis());
			
			contatos.add(contato);
			
		}
		rs.close();
		stmt.close();
		
		return contatos;
	}catch(SQLException e){
		
		throw new RuntimeException(e);
		
	}
}

public void altera(Contato contato){
	Connection connection= ConnectionFactory.getConexao();
	String sql= "update contatos set nome=?, email=?, endereco=?," +
                "dataNascimento=? where id=?";
	
	try{
		
		PreparedStatement stmt= connection.prepareStatement(sql);
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getEmail());
		stmt.setString(3, contato.getEndereco());
		stmt.setLong(4, contato.getDataNascimento());
		stmt.setLong(5, contato.getId());
		stmt.execute();
		stmt.close();
		
	}catch(SQLException e){
		throw new RuntimeException(e);
	}
	
}

public void remove(Contato contato){
	Connection connection= ConnectionFactory.getConexao();
	
	String sql= "delete from contatos where id=?";
	
	try{
		
		PreparedStatement stmt= connection.prepareStatement(sql);
		stmt.setLong(1, contato.getId());
		
		stmt.execute();
		stmt.close();
		
	}catch(SQLException e){
		throw new RuntimeException(e);
	}
	
}

}

package br.com.caelum;

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

public class ConnectionFactory {
private static Connection[] conexao = new Connection[10];
private static boolean conectou = false;
private static int pos = 0;

private ConnectionFactory(){
}

public static Connection getConexao(){
	if (pos == 10){
		pos = 0;
	}
	if (!conectou) {
		try {
		  Class.forName("com.mysql.jdbc.Driver");
		  for (int i = 0; i < 10; i++){
			conexao[i] = DriverManager.getConnection("jdbc:mysql://localhost:3306/fj21", "root","");
		  }
		} catch (Exception e) {
		  System.exit(1);
		}
		conectou = true;
		System.out.println("Conectou!");
	}
	return conexao[pos++];
}

}

Ele não manda o erro, pois no catch está sendo escondido.

Esses dois links são o suficiente para entender esse problema, depois que estiver tudo certo, será possível vê-lo, ai da um retorno, tks.

https://www.caelum.com.br/apostila-java-orientacao-objetos/excecoes-e-controle-de-erros/

O meu problema era que não estava colocando o arquivo .jar do conector dentro da pasta lib do projeto. Mas mesmo assim, obrigado pelo disposição em ajudar. Valeu!!