Ajuda com este erro: "Too many connections"

Pessoal preciso de um help hehe… a muito tempo deixei de programar devido a alguns contratempos estou retornando agora, muito enferrujado…

ao retomar o desenvolvimento de uma aplicação apresentou esse erro:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"
        	at Dao.ConnectionDataBase.getConnection(ConnectionDataBase.java:24)
        	at View.Forms.FrmMnPrincipal.<init>(FrmMnPrincipal.java:31)
        	at Dao.GenericDao.<init>(GenericDao.java:10)
        	at Dao.ArroladoPorDao.<init>(ArroladoPorDao.java:19)
        	at Controller.Helper.ArroladoPorHelper.<init>(ArroladoPorHelper.java:29)
        	at Controller.ArroladoPorController.<init>(ArroladoPorController.java:27)
        	at Controller.Helper.ArroladoPorHelper.<init>(ArroladoPorHelper.java:31)

ao pesquisar vi que se trata em abrir e fechar a conexao bd, porém tentei varias coisas e ainda esta apresentando este erro.

não consegui perceber onde deixei um looping (como disse estou muito enferrujado na programação)

se alguém poder me dar um caminho… abaixo segue minhas classes para analise:

GenéricDao
package Dao;

import View.Forms.FrmMnPrincipal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public abstract class GenericDao {

    FrmMnPrincipal mnP = new FrmMnPrincipal();
    private final Connection connection;

    protected GenericDao() {
        connection = mnP.connection;
//        this.connection = ConnectionDataBase.getConnection();
    }

    protected Connection getConnection() {
        return connection ;
    }

    protected void save(String insertSql, Object... parametros) throws SQLException {
        try (PreparedStatement pstmt = getConnection().prepareStatement(insertSql)) {
            for (int i = 0; i < parametros.length; i++) {
                pstmt.setObject(i + 1, parametros[i]);
            }
            pstmt.execute();
//        connection.close();
        }
    }

    protected void update(String updateSql, Object id, Object... parametros) throws SQLException {
        PreparedStatement pstmt = getConnection().prepareStatement(updateSql);
        for (int i = 0; i < parametros.length; i++) {
            pstmt.setObject(i + 1, parametros[i]);
        }
        pstmt.setObject(parametros.length + 1, id);
        pstmt.execute();
        pstmt.close();
//        connection.close();
    }

    protected void delete(String deleteSql, Object... parametros) throws SQLException {
        PreparedStatement pstmt = getConnection().prepareStatement(deleteSql);
        for (int i = 0; i < parametros.length; i++) {
            pstmt.setObject(i + 1, parametros[i]);
        }

        pstmt.execute();
        pstmt.close();
//        connection.close();
    }
}

ArroladoPorDao
package Dao;

import Model.ArroladoPor;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Usuario
 */
public class ArroladoPorDao extends GenericDao {

    public void salvar(ArroladoPor arroladoPor) throws SQLException {
        String insert = "insert into arroladoPor (arr_descricao) VALUES(?)";
        save(insert, arroladoPor.getDescricao());
    }

    public void alterar(ArroladoPor arroladoPor) throws SQLException {
        String update = "UPDATE arroladoPor "
                + "SET arr_descricao = ? "
                + "WHERE arr_codigo = ?";
        update(update, arroladoPor.getIdArrolado(), arroladoPor.getDescricao());
    }

    public void excluir(ArroladoPor arroladoPor) throws SQLException {
        String delete = "DELETE FROM arroladoPor WHERE arr_codigo = ?";
        delete(delete, arroladoPor.getIdArrolado());
    }

    public List<ArroladoPor> selectAll() throws SQLException {
        List lista = new ArrayList();
        String select = "SELECT * From arroladoPor order by arr_descricao";
        try (PreparedStatement stmt = getConnection().prepareStatement(select);
                ResultSet rs = stmt.executeQuery()) {
            while (rs.next()) {
                ArroladoPor Obj = new ArroladoPor();
                Obj.setIdArrolado(rs.getInt("arr_codigo"));
                Obj.setDescricao(rs.getString("arr_descricao"));
                lista.add(Obj);
            }
        } 
        return lista;
    }

    public boolean VerificaLista() throws SQLException {
        String sql = "select * from arroladoPor";
        PreparedStatement stmt = getConnection().prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        return rs.next();

    }

    public boolean VerificacaoSalvar(ArroladoPor a) throws SQLException {

        String sql = "select arr_descricao from arroladoPor where arr_descricao = '" + a.getDescricao() + "'";
        PreparedStatement stmt = getConnection().prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        return rs.next();
    }

    public boolean verificaExcluir(ArroladoPor a) throws SQLException {
        String sql = "SELECT m.arr_codigo\n"
                + "FROM membros AS m \n"
                + "JOIN arroladopor AS a ON m.arr_codigo = a.arr_codigo "
                + "where m.arr_codigo = '" + a.getIdArrolado() + "'";
        PreparedStatement stmt = getConnection().prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        return rs.next();
    }

    public boolean verificaAlterar(ArroladoPor a) throws SQLException {
        String sql = "SELECT arr_descricao FROM arroladopor where arr_descricao = '" + a.getDescricao() + "'";
        PreparedStatement stmt = getConnection().prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        return rs.next();
    }

}

ArroladoPorController
package Controller;

import Controller.Helper.ArroladoPorHelper;
import Controller.Helper.Helper;
import View.Forms.FrmArroladoPor;
import java.sql.SQLException;
import javax.swing.JDialog;
import javax.swing.JPanel;

/**
 *
 * @author Usuario
 */
public class ArroladoPorController {

    private final FrmArroladoPor view;
    private final ArroladoPorHelper arroladoPorHelper;
    private final Helper helper;

    public ArroladoPorController(FrmArroladoPor view) throws SQLException {
        this.view = view;
        this.arroladoPorHelper = new ArroladoPorHelper(view);
        this.helper = new Helper();
    }

    public void carregaTabela() throws SQLException {
        arroladoPorHelper.carregaTabelaBuscandoNoBanco();
    }

    public void inserir(String estado, Object obj) throws SQLException {
        if ("salvar".equals(estado)) {
            arroladoPorHelper.inserir(obj);
        }
        if ("editar".equals(estado)) {
            arroladoPorHelper.atualizar();
        }
    }

    public void excluir() throws SQLException {
        arroladoPorHelper.excluir();
    }

    public void filtrar() {
        arroladoPorHelper.filtrarTabela();
    }

    public void selecionarLinha() {
        arroladoPorHelper.selecionarLinha(view.getTabela());
    }

    public void setarEstadoComponentes(int estado) {
        arroladoPorHelper.setarEstadoComponentes(estado);
    }

    public void cancelarOperacao() throws SQLException {
        arroladoPorHelper.iniciaTela();
    }

    public void limparCampos(JPanel pnl) {
        helper.limpaCampos(pnl);
    }

    ;

    public void startScreen(JDialog jDialog, String titulo) throws SQLException {
        helper.iniciaTela(jDialog, titulo);

    }

    ;

    public String retirarAcento(String descricao) {
        return helper.retirarAcento(descricao);
    }

}

ArroladoPorHelper
package Controller.Helper;

import Controller.ArroladoPorController;
import Model.ArroladoPor;
import Dao.ArroladoPorDao;
import Model.Table.MeuRenderer;
import Model.Table.ModelTableArroladoPor;
import View.Forms.FrmArroladoPor;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.event.ListSelectionEvent;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class ArroladoPorHelper {

    private FrmArroladoPor view;
    private ModelTableArroladoPor modelTable;
    private ArroladoPorController crontroller;
    private ArroladoPorDao dao;
    private ArroladoPor objClasse;
    private TableRowSorter<TableModel> sorter;

    public ArroladoPorHelper(FrmArroladoPor view) throws SQLException {
        this.dao = new ArroladoPorDao();
        this.view = view;
        this.crontroller = new ArroladoPorController(view);
        this.sorter = new TableRowSorter<>(modelTable);
    }

    public ArroladoPorHelper() {
    }

    public ArroladoPor instanciaObjClasseComId() {
        String descricao = view.getTxtDescricao().getText().toUpperCase().trim();
        int id = Integer.parseInt((view.getTabela().getValueAt(view.getTabela().getSelectedRow(), 0)).toString());
        objClasse = new ArroladoPor(id, crontroller.retirarAcento(descricao));
        return objClasse;
    }

    public ArroladoPor instanciaObjClasseSemId() {
        String descricao = view.getTxtDescricao().getText().toUpperCase().trim();
        objClasse = new ArroladoPor(crontroller.retirarAcento(descricao));
        return objClasse;
    }

    public void carregaTabelaBuscandoNoBanco() throws SQLException {
        ArrayList lista = (ArrayList) dao.selectAll();
        if (lista.isEmpty()) {
            modelTable = new ModelTableArroladoPor();
        }
        modelTable = new ModelTableArroladoPor(lista);
        configuraTabela();
    }

    public void configuraTabela() {
        view.getTabela().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        ListSelectionModel lsm = view.getTabela().getSelectionModel();
        lsm.addListSelectionListener((ListSelectionEvent e) -> {
            if (!e.getValueIsAdjusting()) {
                selecionarLinha(view.getTabela());
            }
        });
        javax.swing.table.TableCellRenderer renderer = new MeuRenderer();
        view.getTabela().setDefaultRenderer(Object.class, renderer);
        sorter = new TableRowSorter<>(modelTable);
        view.getTabela().setRowSorter(sorter);
        view.getTabela().setModel(modelTable);
        view.getTabela().getTableHeader().setReorderingAllowed(false);
        view.getTabela().getColumnModel().getColumn(0).setMinWidth(0);
        view.getTabela().getColumnModel().getColumn(0).setMaxWidth(0);
    }

    public void filtrarTabela() {
        view.getTabela().setRowSorter(sorter);
        String text = view.getTxtPesquisar().getText().toUpperCase();
        if (text.length() == 0) {
            sorter.setRowFilter(null);
        } else {
            sorter.setRowFilter(RowFilter.regexFilter(crontroller.retirarAcento(text)));
        }
    }

    public void selecionarLinha(JTable tabela) {
        if (tabela.getSelectedRow() != -1) {
            int lin = view.getTabela().getSelectedRow();
            String descricao = (view.getTabela().getValueAt(lin, 1).toString().trim());
            view.getTxtDescricao().setText(descricao);
            setarEstadoComponentes(3);
        } else {
            view.getTxtDescricao().setText("");
        }
    }

    public void inserir(Object obj) throws SQLException {
        if (view.getTxtDescricao().getText().trim().equalsIgnoreCase("")) {
            JOptionPane.showMessageDialog(null, "O campo descrição não pode ficar vazio!",
                    "Validação ", JOptionPane.ERROR_MESSAGE);
        } else {
            if (dao.VerificacaoSalvar((ArroladoPor) obj) != true) {
                dao.salvar(instanciaObjClasseSemId());
                carregaTabelaBuscandoNoBanco();
                JOptionPane.showMessageDialog(null,
                        "Novo registro armazenado com sucesso!",
                        "Cadastro", JOptionPane.INFORMATION_MESSAGE);
                setarEstadoComponentes(1);
            } else {
                JOptionPane.showMessageDialog(null, "Não foi possivel salvar, registro já existente!",
                        "Verificação ao Salvar", JOptionPane.ERROR_MESSAGE);
                setarEstadoComponentes(1);
            }
        }
    }

    public void atualizar() throws SQLException {
        if (view.getTabela().getSelectedRow() != -1) {
            if (dao.verificaAlterar(instanciaObjClasseComId()) == true) {
                JOptionPane.showMessageDialog(null, "Não foi possivel editar, registro já existente!",
                        "Verificação ao Editar", JOptionPane.ERROR_MESSAGE);
            } else {
                dao.alterar(instanciaObjClasseComId());
                crontroller.limparCampos(view.getPnlPesquisarPor());
                int id = view.getTabela().convertRowIndexToModel(view.getTabela().getSelectedRow());
                modelTable.setValueAt(instanciaObjClasseComId(), id, 0);
                modelTable.setValueAt(instanciaObjClasseComId(), id, 1);
                modelTable.fireTableDataChanged();
                JOptionPane.showMessageDialog(null, "Alteracão realizado com sucesso!",
                        "Alteração", JOptionPane.INFORMATION_MESSAGE);
                setarEstadoComponentes(1);
            }
        }
    }

    public void excluir() throws SQLException {
        String simNao[] = {"Sim", "Nao"};
        int exclui = JOptionPane.showOptionDialog(null, "Confirma exclusão?", "Excluindo...",
                JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, simNao, simNao[1]);
        if (exclui == 0) {
            if (view.getTabela().getSelectedRow() != -1) {
                if (dao.verificaExcluir(instanciaObjClasseComId()) != true) {
                    //NÃO EXISTE EM OUTRA TABELA PODE EXCLUIR
                    dao.excluir(instanciaObjClasseComId());
                    int id = view.getTabela().convertRowIndexToModel(view.getTabela().getSelectedRow());
                    modelTable.removeRow(id);
                    modelTable.fireTableDataChanged();
                    JOptionPane.showMessageDialog(null, "Exclusão realizado com sucesso!",
                            "Exclusão", JOptionPane.INFORMATION_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(null, "Registro existente em outra tabela!",
                            "Verificação ", javax.swing.JOptionPane.ERROR_MESSAGE);
                }
            }
        }
    }

    public void iniciaTela() throws SQLException {
        sorter.setRowFilter(null);
        configuraTabela();
        setarEstadoComponentes(1);
    }

    public void setarEstadoComponentes(int estado) {
        switch (estado) {
           (...)
            default:
                break;
        }
    }

}

FrmArroladoPor
package View.Forms;

import Controller.ArroladoPorController;
import Controller.Helper.Helper;
import Model.ArroladoPor;
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;

/**
 *
 * @author Usuario
 */
public final class FrmArroladoPor extends javax.swing.JDialog {

    private final ArroladoPorController controller;
    private final Helper helperForHall;
    private ArroladoPor obj;
    private String estado;

    /**
     * Creates new form frmArroladoPor
     *
     * @param owner
     * @param modal
     * @throws java.sql.SQLException
     */
    public FrmArroladoPor(java.awt.Frame owner, boolean modal) throws SQLException {
        super(owner, modal);
        initComponents();
        controller = new ArroladoPorController(this);
//        obj = new ArroladoPor();
        helperForHall = new Helper();
    }

    @SuppressWarnings("unchecked")
    (....)
    }// </editor-fold>                        

    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {                                        
        estado = "salvar";
        controller.setarEstadoComponentes(4);
        controller.limparCampos(pnlPesquisarPor);
        controller.limparCampos(getPnlPesquisarPor());
    }                                       

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                          

        try {
            controller.inserir(estado, instanciaObjClasseSemId());
            controller.setarEstadoComponentes(1);
        } catch (SQLException ex) {
            Logger.getLogger(FrmArroladoPor.class.getName()).log(Level.SEVERE, null, ex);
        }
        controller.limparCampos(pnlPesquisarPor);
        controller.limparCampos(getPnlPesquisarPor());
    }                                         

    private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            controller.excluir();
            controller.limparCampos(pnlPesquisarPor);
            controller.limparCampos(getPnlPesquisarPor());
            controller.setarEstadoComponentes(1);
        } catch (SQLException ex) {
            Logger.getLogger(FrmArroladoPor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                          

    private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        controller.setarEstadoComponentes(6);
        estado = "editar";
    }                                         

    private void btnSelecionarActionPerformed(java.awt.event.ActionEvent evt) {                                              

    }                                             

    private void txtPesquisarKeyReleased(java.awt.event.KeyEvent evt) {                                         
//        estado = "editar";
        controller.filtrar();
        controller.setarEstadoComponentes(2);
    }                                        

    private void tabelaKeyPressed(java.awt.event.KeyEvent evt) {                                  
        estado = "editar";
        controller.selecionarLinha();
        controller.setarEstadoComponentes(3);
    }                                 

    private void txtDescricaoKeyReleased(java.awt.event.KeyEvent evt) {                                         
        getTxtDescricao().setBackground(Color.WHITE);
    }                                        

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        try {
            controller.cancelarOperacao();
        } catch (SQLException ex) {
            Logger.getLogger(FrmArroladoPor.class.getName()).log(Level.SEVERE, null, ex);
        }

    }                                           

    private void txtDescricaoKeyPressed(java.awt.event.KeyEvent evt) {                                        
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            try {
                controller.inserir(estado, instanciaObjClasseSemId());
                controller.setarEstadoComponentes(1);

            } catch (SQLException ex) {
                Logger.getLogger(FrmArroladoPor.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }                                       

    public void startScreen() throws SQLException, ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        controller.startScreen(this, "Cadastrar e Excluir Arrolado Por");
        controller.carregaTabela();
        controller.setarEstadoComponentes(1);
//        controller.invokeMetodo("ArroladoPorHelper()", "teste()");
    }

    public ArroladoPor instanciaObjClasseSemId() {
        String descricao = getTxtDescricao().getText().toUpperCase().trim();
        obj = new ArroladoPor(helperForHall.retirarAcento(descricao));
        return obj;
    }

    public JButton getBtnCancelar() {
        return btnCancelar;
    }

    public void setBtnCancelar(JButton btnCancelar) {
        this.btnCancelar = btnCancelar;
    }

    public JButton getBtnEditar() {
        return btnEditar;
    }

    public void setBtnEditar(JButton btnEditar) {
        this.btnEditar = btnEditar;
    }

    public JButton getBtnExcluir() {
        return btnExcluir;
    }

    public void setBtnExcluir(JButton btnExcluir) {
        this.btnExcluir = btnExcluir;
    }

    public JButton getBtnNovo() {
        return btnNovo;
    }

    public void setBtnNovo(JButton btnNovo) {
        this.btnNovo = btnNovo;
    }

    public JButton getBtnSalvar() {
        return btnSalvar;
    }

    public void setBtnSalvar(JButton btnSalvar) {
        this.btnSalvar = btnSalvar;
    }

    public JButton getBtnSelecionar() {
        return btnSelecionar;
    }

    public void setBtnSelecionar(JButton btnSelecionar) {
        this.btnSelecionar = btnSelecionar;
    }

    public JTable getTabela() {
        return tabela;
    }

    public void setTabela(JTable tabela) {
        this.tabela = tabela;
    }

    public JTextField getTxtPesquisar() {
        return txtPesquisar;
    }

    public void setTxtPesquisar(JTextField txtPesquisar) {
        this.txtPesquisar = txtPesquisar;
    }

    public JPanel getPnlCadastro() {
        return pnlCadastro;
    }

    public void setPnlCadastro(JPanel pnlCadastro) {
        this.pnlCadastro = pnlCadastro;
    }

    public JPanel getPnlPesquisarPor() {
        return pnlPesquisarPor;
    }

    public void setPnlPesquisarPor(JPanel pnlPesquisarPor) {
        this.pnlPesquisarPor = pnlPesquisarPor;
    }

    public JPanel getPnlTabela() {
        return pnlTabela;
    }

    public void setPnlTabela(JPanel pnlTabela) {
        this.pnlTabela = pnlTabela;
    }

    public JTextField getTxtDescricao() {
        return txtDescricao;
    }

    public void setTxtDescricao(JTextField txtDescricao) {
        this.txtDescricao = txtDescricao;
    }


    // Variables declaration - do not modify                     
    (...)

FrmMenuPrincipal
package View.Forms;

import Dao.ConnectionDataBase;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;

/**
 *
 * @author Usuario
 */
public class FrmMnPrincipal extends javax.swing.JFrame {

//    public final Connection conectar = new Connection();
    public final java.sql.Connection connection;
    private FrmArroladoPor arroladopor;

    /**
     * Creates new form mnPrincipal
     */
    public FrmMnPrincipal() {
        initComponents();
        configuraTela();
        this.connection = ConnectionDataBase.getConnection();
    }

    private void configuraTela() {
        setSize(800, 500);
        setLocationRelativeTo(null);
        setTitle("Menu Principal");
        setExtendedState(JFrame.MAXIMIZED_BOTH);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
   (...)
    }// </editor-fold>                        

    private void mnArroladoPorActionPerformed(java.awt.event.ActionEvent evt) {                                              
        try {
            arroladopor = new FrmArroladoPor(null, true);
        } catch (SQLException ex) {
            Logger.getLogger(FrmMnPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        arroladopor.setVisible(true);
    }                                             

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Metal".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(FrmMnPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(FrmMnPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(FrmMnPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(FrmMnPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        //</editor-fold>
        //</editor-fold>
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new FrmMnPrincipal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuItem mnArroladoPor;
    private javax.swing.JMenu mnParametro;
    private javax.swing.JMenuBar mnPrincipal;
    // End of variables declaration                   
}

Você tem que rever as relações de dependência das suas classes.

Teu loop está aqui:

  • O construtor do ArroladoPorHelper chama o construtor do ArroladoPorDao;
  • O ArroladoPorDao abre uma nova conexão com o banco;
  • Em seguida o construtor do ArroladoPorHelper chama o construtor do ArroladoPorController;
  • O construtor do ArroladoPorController chama o construtor do ArroladoPorHelper;
  • O construtor do ArroladoPorHelper chama o construtor do ArroladoPorDao;
  • O ArroladoPorDao abre uma nova conexão com o banco;
  • Em seguida o construtor do ArroladoPorHelper chama o construtor do ArroladoPorController;
  • O construtor do ArroladoPorController chama o construtor do ArroladoPorHelper;
  • O construtor do ArroladoPorHelper chama o construtor do ArroladoPorDao;
  • O ArroladoPorDao abre uma nova conexão com o banco;
  • Em seguida o construtor do ArroladoPorHelper chama o construtor do ArroladoPorController;
  • O construtor do ArroladoPorController chama o construtor do ArroladoPorHelper;
  • O construtor do ArroladoPorHelper chama o construtor do ArroladoPorDao;
  • O ArroladoPorDao abre uma nova conexão com o banco;
  • Em seguida o construtor do ArroladoPorHelper chama o construtor do ArroladoPorController;
  • O construtor do ArroladoPorController chama o construtor do ArroladoPorHelper;
  • O construtor do ArroladoPorHelper chama o construtor do ArroladoPorDao;
  • O ArroladoPorDao abre uma nova conexão com o banco;
  • Em seguida o construtor do ArroladoPorHelper chama o construtor do ArroladoPorController;
  • O construtor do ArroladoPorController chama o construtor do ArroladoPorHelper;
  • O construtor do ArroladoPorHelper chama o construtor do ArroladoPorDao;
  • O ArroladoPorDao abre uma nova conexão com o banco;
  • Em seguida o construtor do ArroladoPorHelper chama o construtor do ArroladoPorController;
  • O construtor do ArroladoPorController chama o construtor do ArroladoPorHelper;

E assim sucessivamente até estourar a pilha ou até o driver do banco não suportar mais conexões.

1 curtida

Nossa, muito obrigado!
Na época eu estava realizando varias mudança nos códigos e parei de programar nem me lembrava mais o que havia feito… consertei e deu certo já está instanciando e agora vou melhorar as classes valeu mesmo

1 curtida