У меня есть утечка соединения в некоторых старых веб-приложениях Java, которые не используют пул соединений.Попытка найти утечку трудна, потому что ИТ не предоставит мне доступ к v $ session SELECT Count(*) FROM v$session;
Так что вместо этого я пытаюсь отладить операторы System.out.Даже после закрытия соединения conn.close();
, когда я печатаю conn в файл системного журнала, он дает мне имя объекта соединения.
try {
Connection conn;
conn.close()
}
catch (SQLException e) { }
finally {
if (conn != null) {
try {
System.out.println("Closing the connection");
conn.close();
}
catch (Exception ex)
{
System.out.println("Exception is " + ex);
}
}
}
// I then check conn and it is not null and I can print the object name.
if (conn != null) {
System.out.println("Connection is still open and is " + conn);
}
однако, если я добавлю conn = null;
ниже оператора conn.close();
, соединение теперь кажется закрытым.Итак, мой вопрос: conn.close ();на самом деле освободить мое соединение, или я должен также сделать его нулевым, чтобы действительно освободить мое соединение.Как я уже говорил, мне действительно трудно определить, действительно ли соединение освобождено, не имея возможности запросить v $ session.Есть ли фрагмент кода Java, который может дать мне мои открытые соединения ??
На данный момент это, вероятно, познавательно, потому что я планирую реорганизовать эти приложения, чтобы использовать пул соединений, но сейчас я ищу быстрый запрет