В Java, когда соединение URL закрывается?

Когда Java отключает подключения к URL? Я не вижу метода close() на любом URL или URLConnection, поэтому он освобождает соединение, как только запрос заканчивается? Я в основном прошу выяснить, нужно ли мне очищать обработчик исключений.

try {
  URL url = new URL("http://foo.bar");
  URLConnection conn = url.openConnection();
  // use the connection
}
catch (Exception e) {
  // any clean up here?
}

Ответ 1

Это зависит от конкретного протокола, указанного в протоколе. Некоторые поддерживают постоянные соединения, другие закрывают свои соединения, когда ваш вызов закрывается во входном или выходном потоке, заданном соединением. Но кроме напоминания о закрытии потоков, которые вы открыли из URLConnection, вы ничего не можете сделать.

Из javadoc для java.net.URLConnection

Вызов методов close() на InputStream или OutputStream URLConnection после запроса может бесплатно сетевые ресурсы, связанные с этим экземпляр, если только конкретный протокол спецификации указывают разные поведения для него.

Ответ 2

Если вы передали HttpURLConnection, существует метод disconnect(). Если соединение простаивает, оно, вероятно, отключится немедленно. Нет гарантий.