2008-11-07 16 views
63

¿Cuándo deja java las conexiones a una URL? No veo un método close() en URL ni en URLConnection, así que ¿libera la conexión tan pronto como finaliza la solicitud? Principalmente estoy preguntando si necesito hacer una limpieza en un manejador de excepciones.En Java, ¿cuándo se cierra una conexión URL?

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

Nunca use catch (Exception), si se lanza una excepción específica, capture cada uno en su propia cláusula – OscarRyz

+3

o al menos capture la excepción última (en caso de que ninguno de los demás capture la excepción). – jeremy

Respuesta

41

Depende del protocolo específico especificado en el protocolo. Algunos mantienen conexiones persistentes, otros cierran sus conexiones cuando su llamada se cierra en la entrada o en la salida dada por la conexión. Pero, aparte de recordar cerrar las rutas que abriste desde URLConnection, no hay nada más que puedas hacer.

Desde el Javadoc para java.net.URLConnection

Invocando el close() métodos en el InputStream o OutputStream de un URLConnection después de una petición puede liberar recursos de red asociados a este ejemplo, a menos las especificaciones particulares del protocolo especifican comportamientos diferentes para él.

+2

Esto responde bien, pero no cubre el caso nominal de HttpUrlConnection. – Snicolas

39

Si transfiere a un HttpURLConnection, hay un método disconnect(). Si la conexión está inactiva, probablemente se desconecte inmediatamente. Sin garantías

Cuestiones relacionadas