我正在使用Jackson的ObjectMapper类向URL发出请求。在我的本地机器(Mac)上运行良好,但从我的Unix虚拟机上失败了。区别在于我的VM在防火墙后面,而我的Mac则没有。但是,两台机器都可以访问相同的代理。
看起来可能涉及一些SSL问题。有人能发现问题吗?
在两个部署中使用以下系统属性:
看起来可能涉及一些SSL问题。有人能发现问题吗?
在两个部署中使用以下系统属性:
System.setProperty("http.proxyHost", _config.getProxyHost());
System.setProperty("http.proxyPort", _config.getProxyPort());
System.setProperty("https.proxyHost", _config.getProxyHost());
System.setProperty("https.proxyPort", _config.getProxyPort());
以下是来自 Unix 系统的完整堆栈跟踪:
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:189)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1511)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at java.net.URL.openStream(URL.java:1038)
at com.fasterxml.jackson.core.JsonFactory._optimizedStreamFromURL(JsonFactory.java:1420)
at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:730)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2137)
当我使用-Djavax.net.debug=ssl时,我看到以下内容:
main, WRITE: TLSv1.2 Handshake, length = 286
main, handling exception: java.net.SocketException: Connection reset
main, SEND TLSv1.2 ALERT: fatal, description = unexpected_message
main, WRITE: TLSv1.2 Alert, length = 2
main, Exception sending alert: java.net.SocketException: Broken pipe
main, called closeSocket()