[Resolvido] Pool de conexões resolve essa lista de problemas no firebird?

Galera blz, preciso da ajuda de vcs, existe um projeto legado aqui na empresa onde trabalho e o mesmo veio para nós damos manutenção nele. Queria saber da opinião de vcs visto a lista de problemas abaixo se a mudança que estou propondo fazer irá solucionar ?

Problemas

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544336. deadlock update conflicts with concurrent update No message for code 335544878 found at

Erro: GDS Exception. 335544569. Dynamic SQL Error 335544569 SQL error code = -504 Invalid cursor reference Cursor is not open

Erro: GDS Exception. 335544336. deadlock update conflicts with concurrent update No message for code 335544878 found.

org.firebirdsql.gds.impl.GDSHelper.fetch(268) org.firebirdsql.jdbc.FBStatementFetcher.fetch(201) org.firebirdsql.jdbc.FBStatementFetcher.next(119) org.firebirdsql.jdbc.AbstractResultSet.next(250)

Mudança

Hoje a conexão está sendo feita assim

[code]public static void conectar() {
try {
Class.forName(“org.firebirdsql.jdbc.FBDriver”);

  connection = DriverManager.getConnection(Variaveis.caminhoBanco, ParametrosLocais.getParametro(ParametrosLocais.USER_BANCO), ParametrosLocais.getParametro(ParametrosLocais.PASS_BANCO));

  connection.setAutoCommit(false);
  connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
  isConnected = true;
}
catch (ClassNotFoundException cnfex) {
  isConnected = false;
  ultimoErro = cnfex.toString();
}
catch (SQLException sqlex) {
  sqlex.printStackTrace();
  isConnected = false;
  ultimoErro = sqlex.toString();
}

}[/code]

Eu sei muito bem que a conexão dessa forma da problema mas o pessoal não acredita :frowning: e a solução que proponho é mudar para pool de conexões geranciado pelas propria API do firebird

[code] public static void conectar() {
try {
String caminhoBanco = Variaveis.caminhoBanco;// jdbc:firebirdsql:127.0.0.1/23050:/home/alex/apoio/apoio.fdb?lc_ctype=WIN1252
caminhoBanco = caminhoBanco.replace(“jdbc:firebirdsql:”, “”);
caminhoBanco = caminhoBanco.replace("?lc_ctype=WIN1252", “”);

  FBWrappingDataSource pool = new org.firebirdsql.pool.FBWrappingDataSource();
  pool.setMaxPoolSize(5);
  pool.setMinPoolSize(2);
  pool.setMaxStatements(300);
  pool.setMaxIdleTime(30 * 60 * 60);
  pool.setDatabase(caminhoBanco);
  pool.setPooling(true);
  pool.setCharSet("WIN1252");
  pool.setUserName(ParametrosLocais.getParametro(ParametrosLocais.USER_BANCO));
  pool.setPassword(ParametrosLocais.getParametro(ParametrosLocais.PASS_BANCO));
  pool.setUseStreamBlobs(true);
  
  connection = pool.getConnection();
  connection.setAutoCommit(false);
  connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
  isConnected = true;

} catch (Exception sqlex) {
  sqlex.printStackTrace();
  isConnected = false;
  ultimoErro = sqlex.toString();
} finally {
  try {
    connection.close();
  } catch (SQLException e) {
    e.printStackTrace();
  }
}

}[/code]

Alguém já passou por esse problema e sabe me responder se estou no caminho certo ?

Alguém ?

Respondendo a mim mesmo, sim resolve :slight_smile: