타임아웃을 기본적으로 제공해주지 않아 아파치의 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)
) ;
...
}
}
....
public Socket createSocket(String host, int port)
throws IOException, UnknownHostException {
...
socket.connect(
new InetSocketAddress(host, port),
Integer.parseInt(defaultConnectTimeout)
) ;
...
}
}