In case anyone has this same problem in the future, I solved it by creating a custom socket factory that mostly delegates methods to the SSLSocketFactory,
Code:
import javax.net.SocketFactory;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class CustomSSLSocketFactory extends SocketFactory {
private static final int SO_TIMEOUT = 5000;
private static final CustomSSLSocketFactory _instance = new CustomSSLSocketFactory();
private static final SocketFactory _sslSocketFactory = SSLSocketFactory.getDefault();
public static SocketFactory getDefault() {
return _instance;
}
public Socket createSocket() throws IOException {
Socket s = _sslSocketFactory.createSocket();
s.setSoTimeout(SO_TIMEOUT);
return s;
}
@Override
public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort)
throws IOException {
Socket s = _sslSocketFactory.createSocket(address, port, localAddress, localPort);
s.setSoTimeout(SO_TIMEOUT);
return s;
}
@Override
public Socket createSocket(InetAddress host, int port)
throws IOException {
Socket s = _sslSocketFactory.createSocket(host, port);
s.setSoTimeout(SO_TIMEOUT);
return s;
}
@Override
public Socket createSocket(String host, int port)
throws IOException, UnknownHostException {
Socket s = _sslSocketFactory.createSocket(host, port);
s.setSoTimeout(SO_TIMEOUT);
return s;
}
@Override
public Socket createSocket(String host, int port, InetAddress localHost, int localPort)
throws IOException, UnknownHostException {
Socket s = _sslSocketFactory.createSocket(host, port, localHost, localPort);
s.setSoTimeout(SO_TIMEOUT);
return s;
}
}