В Java, когда URL-соединение закрывается? - PullRequest
72 голосов
/ 07 ноября 2008

Когда 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?
}

Ответы [ 2 ]

46 голосов
/ 07 ноября 2008

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

46 голосов
/ 07 ноября 2008

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

Из javadoc для java.net.URLConnection

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...