Java에서 URL 연결은 언제 종료됩니까?


82

Java는 언제 URL에 대한 연결을 해제합니까? URL 또는 URLConnection에 close () 메서드가 표시되지 않으므로 요청이 완료되는 즉시 연결이 해제됩니까? 저는 주로 예외 처리기에서 정리를해야하는지 확인하고 싶습니다.

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

10
catch (Exception)을 사용하지 마십시오. 특정 예외가 발생하면 자체 절에서 각 예외를 catch합니다.
OscarRyz

4
또는 적어도 마지막에 예외를 포착하십시오 (다른 사람이 예외를 포착하지 않는 경우).
jeremy

답변:


50

프로토콜에 지정된 특정 프로토콜에 따라 다릅니다. 일부는 지속적인 연결을 유지하고 다른 일부는 연결이 제공하는 입력 또는 출력 스트림에서 호출이 닫힐 때 연결을 닫습니다. 그러나 URLConnection에서 연 스트림을 닫는 것을 기억하는 것 외에는 수행 할 수있는 다른 작업이 없습니다.

java.net.URLConnection에 대한 javadoc에서

요청 후 URLConnection의 InputStream 또는 OutputStream에서 close () 메서드를 호출하면 특정 프로토콜 사양이 다른 동작을 지정하지 않는 한이 인스턴스와 관련된 네트워크 리소스를 해제 할 수 있습니다.


2
이것은 좋은 대답이지만 HttpUrlConnection의 명목상 경우를 다루지 않습니다.
Snicolas

53

HttpURLConnection으로 캐스트하면 disconnect () 메서드가 있습니다. 연결이 유휴 상태이면 즉시 연결이 끊어집니다. 보장 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.