java - HttpURLConnection 에 관하여
jdk 1.3.1 환경에서 HttpURLConnection 의 connect/read timeout을 구현하고 있습니다. 기본적으로 별도 쓰레드에서 connect 하고 join(timeout) 하는식으로 할려고 합니다만.
TimeoutConnection은 HttpURLConnection을 extends 하고 Runnable을 implements 하고.. connect(timeout) 메소드를 추가로 만들면 기존 메소드 그대로 수용되므로 깔끔할것 같습니다.
헌데, URL.openConnection 은 http 프로토콜에서 HttpURLConnection 객체를 리턴하므로 이런 방식으로 TimeoutConnection객체를 만들순 없고 URL을 인자로 받는 생성자를 만들고 super(url)로 HttpURLConnection에 넘기는 식으로 하고 있습니다. 물론, TimeoutConnection은 abstract class가 아니라서 바로 인스턴스화 가능하게 하였구요.
다른건 다 되었는데. TimeoutConnection 에서 super.connect()를 호출하면 바로 호출할 수 없다고 나오는군요. 헌데 HttpURLConnection 소스를 보면 connect()가 구현되어 있질 않고. URLConnection 소스엔 abstract method인데.. 어디서 구현되어 있나요? TimeoutConnection에서 connect를 호출할 려면 독립적으로 구현해야만 하는가요?
URLConnection object가 생성이 되면 커넥션까지 이루어집니
URLConnection object가 생성이 되면 커넥션까지 이루어집니다.
sun.net.client.defaultConnectTimeout 과 sun.net.client.defaultReadTimeout를 봐 보세요.
그리고 apache jakarta common httpclient에는 setSoTimeout이 있습니다.
----
I paint objects as I think them, not as I see them.
atie's minipage
댓글 달기