Sto eseguendo alcuni refactoring per la nostra applicazione e cercando di ridurre il numero di problemi segnalati nella nostra scansione ISO (uno strumento di analisi del codice statico basato su HP Fortify). In questo momento, quello che sto cercando di risolvere è il problema "Unreleased Resource: Database" che la nostra applicazione ha creato. Uno dei motivi più importanti per questo è costrutti come questo:
Connection conn = null;
Boolean myConn = false;
try{
if(conn == null){
conn = DatabaseUtil.getConnection();
myConn = true;
}
result = DbClass.getObject(conn, otherParameters);
}catch(DatabaseException de){
throw de;
}catch(SQLException sqle){
throw new DatabaseException("Error Message");
}finally{
if(myConn && conn != null){
try{
conn.rollback();
conn.close();
}catch(SQLException sqle){}
}
Questo è un costrutto abbastanza standard nella nostra applicazione per garantire che la connessione al database sia chiusa alla fine del nostro blocco Try. Eppure ogni volta che lo usiamo, lo strumento lo segnala come un problema.
C'è qualcosa di sbagliato in questo costrutto, e c'è qualcosa che possiamo fare per risolverlo se si tratta di un problema?