Вопрос

Когда 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?
}
Это было полезно?

Решение

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

Из javadoc для java.net.URLConnection

  

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top