타임아웃을 기본적으로 제공해주지 않아 아파치의 HttpClient 도 써봤다가 별짓을 다 해봤는데 아주 쉽게 설정이 가능하다.

System.setProperty("sun.net.client.defaultConnectTimeout", defaultConnectTimeout);
System.setProperty("sun.net.client.defaultReadTimeout", defaultReadTimeout);

이 두가지 설정을 변경해주면 된다

하지만 옛날 버젼의 JSSE의 경우에는 URL객체에 1.4.2버젼의 핸들러를 지정해주어야 한다


SSLSocketFactory 팩토리를 확장하여 createSocket 메소드를 오버라이딩 하여 소켓으로 커넥션을 맺을때 인자값으로 타임아웃을 설정할 수 있다

final class HTTPSSLSocketFactory extends SSLSocketFactory {
....
  public Socket createSocket(String host, int port)
  throws IOException,  UnknownHostException {
  ...
     socket.connect(
        new InetSocketAddress(host, port),
        Integer.parseInt(defaultConnectTimeout)
      ) ;
  ...
  }
}

+ Recent posts