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.