Итак, я отправил запрос https на другой сервер. Я сократил его время, добавив свойство set Timeout, которое истекает через 5 секунд в случае, если ответ не приходит с сервера. Проблема в настройке работает нормально в режиме разработки, но в рабочем режиме тайм-аут не работает и получение ответа от сервера занимает 4-5 минут.
ИСПОЛЬЗОВАНИЕ:
Я не отправляю имя пользователя и пароль при подключении к серверу, так как мне нужно перехватить исключение и дать соответствующее сообщение пользователю. Я использую клиент XmlRpcClientConfigImpl, а также TrustManager и SSLContext из java.net для установления связи.
HA также сделал некоторые записи, в которых код внутри исключения запускается через 4-5 минут
Ссылка от setTimeout с использованием xmlprc
Я использую причал в качестве сервера
Вот некоторый код, так как я не могу поделиться с ним большей частью
connected =true;
Proxy proxy = new Proxy(ServerVO.getHost(), ServerVO.getPort(), ServerVO.getUserName(), ServerVO.getPassword(), isHTTP);
int defaultConnTimeOut = SomeCass.getConnectionTimeOut();
int defaultReplyTimeOut = SomeCass.getReplyTimeOut();
SomeCass.setConnectionTimeOut(2000);
SomeCass.setReplyTimeOut(5000);
try {
logger.info("fetching versionnnnnnnn-----------------");
SomeCass.version();
}
catch (Exception e) {
logger.info("fetching versionnnnnnnn-------exceptionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn----------");
connected = Boolean.FALSE;
}
finally {
SomeCass.setConnectionTimeOut(defaultConnTimeOut);
SomeCass.setReplyTimeOut(defaultReplyTimeOut);
}
код для тайм-аута
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
XmlRpcClient client = new XmlRpcClient();
config.setServerURL(new URL(serverURL));
config.setConnectionTimeout(xmlrpcConnTimeout);
config.setReplyTimeout(xmlrpcReplyTimeOut);
client.setConfig(config);
// установка имени пользователя хоста в конфигурации
Код для рукопожатия на констуркторе класса Proxy
this.address = address;
this.port = port;
this.username = username;
this.password = password;
this.url = url;
if(!this.isHTTP) {
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) {
// Trust always
}
public void checkServerTrusted(X509Certificate[] certs,
String authType) {
// Trust always
}
} };
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
// Create empty HostnameVerifier
HostnameVerifier hv = new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
}