0
respostas

Exception: The internal connection pool has reached its maximum size

Boa tarde, estou fazendo um sistema simples que tem apenas um CRUD para praticar, e comecei a receber um erro ao tentar editar varias vezes os dados que tenho no meu banco, estou utilizando JPA, Hibernate e MySQL. Ex: se eu editar uma vez ou duas qualquer instancia funciona de boa, o problema só ocorre se continuar testando e editando os itens e tanto faz se estou editando o mesmo ou outro, parece que tem um limite de edições que posso fazer!

@Override
    public String executa(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String cnpj = request.getParameter("cnpj");
        String razaoSocial = request.getParameter("razaoSocial");
        String logradouro = request.getParameter("logradouro");
        String bairro = request.getParameter("bairro");
        String numero = request.getParameter("numero");
        String cep = request.getParameter("cep");
        String cidade = request.getParameter("cidade");

        EmpresaDao dao = new EmpresaDao();
        Empresa empresa = (Empresa) dao.getEmpresaById(cnpj);
        EnderecoDao daoend = new EnderecoDao();
        Endereco endereco = daoend.findEndereçoEmpresa(empresa);

        empresa.setCnpj(cnpj);
        empresa.setRazaoSocial(razaoSocial);

        endereco.setLogradouro(logradouro);
        endereco.setBairro(bairro);
        endereco.setNumero(numero);
        endereco.setCep(cep);
        endereco.setCidade(cidade);
        empresa.setEndereco(endereco);
        endereco.setEmpresa(empresa);

        dao.alterar(empresa, endereco);

        return "redirect:controller?acao=ListarEmpresas";
    }

public Empresa getEmpresaById(String cnpj) {
        EntityManager manager = new FabricaConexao().getEntityManager();
        manager.getTransaction().begin();
        String sql = "select e from Empresa as e where e.cnpj= :pCNPJ";
        Query query = manager.createQuery(sql);
        query.setParameter("pCNPJ", cnpj);
        Empresa empresa = (Empresa) query.getSingleResult();
        manager.close();
        return empresa;
    }

public Endereco findEndereçoEmpresa(Empresa empresa) {
        EntityManager manager = new FabricaConexao().getEntityManager();
        manager.getTransaction().begin();
        String sql = "select e from Endereco as e where e.empresa.cnpj = :pEmpresaCnpj";
        Query query = manager.createQuery(sql);
        query.setParameter("pEmpresaCnpj", empresa.getCnpj());
        Endereco endereco = (Endereco) query.getSingleResult();
        manager.getTransaction().commit();
        manager.close();
        return endereco;
    }

public void alterar(Empresa empresa, Endereco endereco) {

        EntityManager manager = new FabricaConexao().getEntityManager();
        manager.getTransaction().begin();

        manager.merge(empresa);
        manager.merge(endereco);

        manager.getTransaction().commit();
        manager.close();

    }

Exception: The internal connection pool has reached its maximum size and no connection is currently available

Alguém sabe como resolver esse problema ?