1. 程式人生 > >Remote host closed connection during handshake和SSL peer shut down incorrectly報錯的解決方法

Remote host closed connection during handshake和SSL peer shut down incorrectly報錯的解決方法

Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:882)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
    ... 35 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:462)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863)
    ... 41 more

今天使用新浪微博API獲取公共資料。當資料記錄到達約137萬條的時候,程式報如上錯誤!

最後在stackoverflow找到了答案:大部分是因為jdk版本的原因。換成jdk 1.7就好了,程式至今還沒報上述錯誤!

服務端執行的是tomcat 7,執行在 Java 7, Linux, and  Amazon EC2等類似環境中。同樣客戶端要求執行在同等版本java環境下。文中進一步提出了一個深奧的問題:是否在java 6中有同樣的加密或協議設定,使得程式在java 6環境下能夠正常執行。

像java出現了問題,並報錯,用外文搜尋引擎比較容易找到答案!

注:問題又重現了,跟網速也有關係              2014-01-05

解決方案的原文地址:http://stackoverflow.com/questions/15589880/how-to-make-java-6-which-fails-ssl-connection-with-ssl-peer-shut-down-incorrec點選開啟連結