Это не утечка, или, по крайней мере, это не имеет значения. Если у вас есть одноэлементный объект (драйвер JDBC), и он никогда не будет выпущен до завершения работы приложения, имеет ли это значение?
База данных закроет все ожидающие соединения через определенный промежуток времени.
Если это действительно беспокоит вас, вы можете исправить это, переопределив метод close следующим образом:
public class XBasicDataSource extends BasicDataSource {
@Override
public synchronized void close() throws SQLException {
DriverManager.deregisterDriver(DriverManager.getDriver(url));
super.close();
}
}
И используйте свой XBasicDataSource.