Сонар: «Закройте это подготовленное заявление»

ПочемуSonarQube плагин для Jenkins, жалующийся на открытое заявление, если я закрою его в блоке finally?

(Мне нужно проверить соединения с базой данных в отдельной функции.)

final String PING = "SELECT 1 from dual";

public boolean validateConnection(Connection conn) { 

    PreparedStatement statement = null;
    try{
        if(conn == null){
            LOGGER.log( LogEntries.PingError, "Null connection on PING. Reached max # of connections or network issue. Stats: "+getCacheStatistics() );
            return false;
        }

        if(conn.isClosed()){
            // logger
            return false;   
        } 

        statement = conn.prepareStatement( PING ); //%%%%%% SONAR: Close this "PreparedStatement".
        statement.setQueryTimeout(QUERY_TIMEOUT);

        try( ResultSet rs = statement.executeQuery() ){
            if ( rs != null && rs.next() ) {
                return true;
            }
        }catch(Exception exRs){
            // logger
            throw exRs;
        }
    }catch(Exception ex){
        // logger
    }finally{
        try{
            statement.close();
        }catch(Exception excpt){
            // logger
        }
    }
    return false;
}

Ответы на вопрос(2)

Ваш ответ на вопрос