web-dev-qa-db-fra.com

Dans Java quand une connexion URL se ferme-t-elle?

Quand Java lâche-t-il une connexion à une URL? Je ne vois pas de méthode close () sur URL ou URLConnection donc libère-t-elle la connexion dès que la requête se termine? Je demande principalement à voir si je dois effectuer un nettoyage dans un gestionnaire d'exceptions.

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

Cela dépend du protocole spécifique spécifié dans le protocole. Certains maintiennent des connexions persistantes, d'autres ferment leurs connexions lorsque votre appel se ferme dans le flux d'entrée ou de sortie fourni par la connexion. Mais à part penser à fermer les flux que vous avez ouverts depuis URLConnection, vous ne pouvez rien faire d'autre.

Depuis le javadoc pour Java.net.URLConnection

L'appel des méthodes close () sur InputStream ou OutputStream d'une connexion URLConnection après une demande peut libérer des ressources réseau associées à cette instance, sauf si des spécifications de protocole particulières spécifient des comportements différents pour elle.

46
kasperjj

Si vous transtypez vers une HttpURLConnection, il existe une méthode déconnecter () . Si la connexion est inactive, elle se déconnectera probablement immédiatement. Aucune garantie.

48
James Schek