Estouro de Pilha - java.lang.StackOverflowError

1 resposta
denirroberto

Boa tarde pessoal, bom estou com esse problema descrito no cabeçalho do tópico não consigo resolver.

o Erro é esse:

Exception in thread main java.lang.StackOverflowError

at java.lang.Character.toUpperCase(Character.java:4278)

at java.lang.String.regionMatches(String.java:1383)

at java.lang.String.equalsIgnoreCase(String.java:1119)

at sun.net.spi.DefaultProxySelector$3.run(DefaultProxySelector.java:212)

at java.security.AccessController.doPrivileged(Native Method)

at sun.net.spi.DefaultProxySelector.select(DefaultProxySelector.java:201)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:358)

at java.net.Socket.connect(Socket.java:529)

at java.net.Socket.connect(Socket.java:478)

at java.net.Socket.(Socket.java:375)

at java.net.Socket.(Socket.java:189)

at org.postgresql.core.PGStream.(PGStream.java:62)

at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76)

at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)

at org.postgresql.jdbc2.AbstractJdbc2Connection.(AbstractJdbc2Connection.java:125)

at org.postgresql.jdbc3.AbstractJdbc3Connection.(AbstractJdbc3Connection.java:30)

at org.postgresql.jdbc3.Jdbc3Connection.(Jdbc3Connection.java:24)

at org.postgresql.Driver.makeConnection(Driver.java:393)

at org.postgresql.Driver.connect(Driver.java:267)

at java.sql.DriverManager.getConnection(DriverManager.java:582)

at java.sql.DriverManager.getConnection(DriverManager.java:185)

at caixa.sp1.job.util.ConexaoPostgreSQL.(ConexaoPostgreSQL.java:36)

Não é tudo mas até onde interessa, o resto é só repeteco.

O que eu faço para calsar esse erro.

----------------------- Leitor do Arquivo -----------------------

public void entidadeIni(Scanner scan, File arquivo) {
        if (arquivo.exists()) {
            try {

                //Scanea o arquivo se for nulo
                if (scan == null) {
                    scan = new Scanner(arquivo);
                }

                //Iniciar leitura do arquivo
                while (scan.hasNextLine()) {
                    Util.numLinhaFimArquivo++;
                    String textoLinha = scan.nextLine();

                    //Comparando valores da entidade
                    if (Util.numLinhaFimArquivo > logCarga.getNumeroLinhaLida()) {
                        for (int i = 0; i < dados.length; i++) {
                            if (textoLinha.contains(dados[i])) {
                                nagiosLogControle.dados(textoLinha, dados[i], scan, arquivo);
                            }
                        }
                    }
                }
            } catch (FileNotFoundException ex) {
                System.out.println("ERRO03 - Arquivo inexistente no caminho especificado: " + ex);
            }
        }
    }

----------------------- Grava -----------------------

public void dados(String textoLinha, String nomeEvento, Scanner scan, File arquivo) {
        linhaDados = textoLinha.replaceAll("\\[|\\]|" + nomeEvento + "", "").replaceFirst(":", "|").replaceAll(";", "|").replaceFirst(" ", "").replaceFirst(" ", "");
        nagiosLog.setNomeEvento(nomeEvento);
        nagiosLog.setTuplaEvento(linhaDados);
        inserir(scan, arquivo);
    }

public void inserir(Scanner scan, File arquivo) {
        //Gravando linha de dados no banco
        dao = new NagiosLogDAO();
        dao.inserir(nagiosLog);

        //Términando a gravação continua a leitura
        nagiosLogService = new NagiosLogService();
        nagiosLogService.entidadeIni(scan, arquivo);
    }

Bom pessoal o básico é isso. O problema é que se o arquivo tem até umas 1000 linhas ele nãdá erro nenhum, funciona perfeitamente, acima disso dá o erro de estouro de pilha.

Observando essa linha ------------- at caixa.sp1.job.util.ConexaoPostgreSQL.(ConexaoPostgreSQL.java:36) -------------

Pode-se observar que não consegue mais abrir conexão, para inseriri por isso causa esse estouro, o problema é que não tenho nem como começar a procurar para resolver.

--------- Classe Conexão

private String driver = "org.postgresql.Driver";
    private String url = "jdbc:postgresql://ip_servidor:5432/rdacesso001";//Desenvolvimento PG-8.4.11
    private String user = "";
    private String password = "";
    private Connection conn;

  
    public ConexaoPostgreSQL() {
        try {
            Class.forName(driver);
            try {
                conn = DriverManager.getConnection(url, user, password);
            } catch (SQLException excessao) {
                System.out.println("Erro na conexão com o banco: " + excessao);
            }
        } catch (ClassNotFoundException excessao) {
            System.out.println("Erro na conexão com do driver com o banco: " + excessao);
        }
    }


    public Connection abreConn() {
        return conn;
    }


    public void fechaConn() {
        try {
            conn.close();
        } catch (Exception excessao) {
            System.out.println("Erro ao encerrar a conexão com o banco: " + excessao);
        }
    }

--------------------------- Classe Inserir ----------------------------------

protected PreparedStatement pstmt;
    protected ResultSet rs;
    protected ConexaoPostgreSQL conexaoPostgreSQL;
    private static final String INSERIR = "INSERT INTO tb002_nagios_log("
            + "no_evento, tupla_evento"
            + ") "
            + "VALUES(?, ?);";

public void inserir(NagiosLog nagiosLog) {
        conexaoPostgreSQL = new ConexaoPostgreSQL();
        try {
            conexaoPostgreSQL.abreConn().createStatement().executeUpdate("VACUUM tb002_nagios_log");//Uma parada que implemento pra evitar o erro mas não funcionou
            pstmt = conexaoPostgreSQL.abreConn().prepareStatement(INSERIR);

            pstmt.setString(1, nagiosLog.getNomeEvento());
            pstmt.setString(2, nagiosLog.getTuplaEvento());

            pstmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DAOUtil.fechar(conexaoPostgreSQL, pstmt, rs);
        }
    }

AJUDEMMMMMMMMMMMMMMMMMMMMMMMMMM.

1 Resposta

mi.rodrigues

O tópico está duplicado.

Criado 27 de março de 2013
Ultima resposta 28 de mar. de 2013
Respostas 1
Participantes 2