exceção de conexões abertas

Bom dia a todos,

Estou tendo um problema onde conforme vou utilizando a aplicação estou recebendo esta exceção.

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"

De cara já percebo que tenho muitas conexões abertas e provavelmente estou estourando o limite do MYSQL, só que toda transação que está vendo na minha aplicação estou fechando. Segue as duas formas que abre e estou fechando a conexão.

[code] public String gravar(){
String messageCadastro = “Gerência “+gerencia.getNomeGerencia()+” cadastrada com sucesso.”;
String messageAlterar = “Gerência “+gerencia.getNomeGerencia()+” alterada com sucesso.”;
FacesContext context = FacesContext.getCurrentInstance();

	DAO<Gerencia> dao = new DAO<Gerencia>(Gerencia.class);

	if (gerencia.getId_gerencia() == null) {
		dao.adiciona(gerencia);
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, messageCadastro, ""));	
	} else {
		dao.atualiza(gerencia);
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, messageAlterar, ""));			
	}
	gerencias = new DAO<Gerencia>(Gerencia.class).listaTodos();
	this.gerencia = new Gerencia();
	return "gerencia.xhtml?faces-redirect=true";
}[/code]

[code]public List getPerfilUsuarios() throws ParseException{

	EntityManager em = new JPAUtil().getEntityManager();    
	em.getTransaction().begin();    
	
	String jpql = "select p from PerfilUsuario p where p.tipoUsuario <>'Administrador'";
	
	Query query = em.createQuery(jpql);  
	
	em.close();    
	return query.getResultList();
}[/code]

Desde já, obrigado.

Você não esta fechando as conexões em caso de erro, pode ser isso.
Da uma olhada aqui: How to close a JPA EntityManger in web applications