После обновления версии Java на компьютере с Windows 10 x64 с Java 1.8u161 до 1.8u191 я столкнулся с несколькими проблемами.После некоторой отладки я придумал следующий фрагмент кода, который демонстрирует это.Если побежал с обновлением 161 все работает нормально.Выполнение той же части кода с обновлением 191 приводит к истечению времени ожидания соединения при попытке получить InputStream.Я попытался использовать сертификаты установки обновления 161, которые тоже не помогли.Запуск приложения с включенной сетевой отладкой (-Djavax.net.debug = all) не показывал значительных различий, пока не получен доступ к InputStream (конечно, некоторые сертификаты и шифры различаются).Похоже, что рукопожатие SSL не выполняется при обновлении 191 (есть соответствующие выходные данные отладки для обновления 161).Кто-нибудь может подтвердить это или сказать мне, что я делаю здесь не так?
package example;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.io.InputStream;
public class ConnectionTimeout {
public static void main(String[] args) throws Exception {
System.err.println("java.version=" + System.getProperty("java.version"));
HttpURLConnection.setFollowRedirects(false);
URL url = new URL("https://heise.de");
URLConnection connection = url.openConnection();
System.err.println("connectiontype: " + connection.getClass().getName());
// timeout on 1.8-191; not on 1.8-161
InputStream instream = connection.getInputStream();
System.err.println("instream:" + instream.getClass().getName());
instream.close();
}
}
В соответствии с запросом вот трассировка стека:
Exception in thread "main" java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at example.ConnectionTimeout.main(ConnectionTimeout.java:24)