我正嘗試將Java Axis2客戶端從Websphere6/JRE1.5.x遷移到Solaris上的Tomcat 7.0.42/JRE1.6.x。在這個過程中,我遇到了一個問題,即客戶端可以通過https第一次與web服務進行通信,但是由於ssl錯誤而從第二次嘗試開始就會失敗。Axis2客戶端無法在Tomcat 7.0.42上啓動第二個https呼叫
從日誌中的失敗嘗試中提取表明 -
%%客戶端緩存[會議-1,SSL_RSA_WITH_RC4_128_MD5]
%%嘗試從端口恢復[會議-1,SSL_RSA_WITH_RC4_128_MD5] 34092
* *的ClientHello,使用TLSv1
...
線程606,WRITE:使用TLSv1握手,長度= 179
線程606,READ:使用TLSv1異動,>長度= 2
線程606,RECV的TLSv1警告:致命,unexpected_message
和實際的例外是(我懷疑這是由於沒有開放式插槽) -
產生的原因:javax.net.ssl中。異常SSLException:收到致命警報: unexpected_message在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException(來源不明)
在com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知 源)在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(未知來源)
在com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(未知 源)在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(未知 源)在 的com.sun .net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source) at java.io.BufferedOutputStream.flushBuffer(Unknown Source)在 java.io.BufferedOutputStream.write(來源不明)處 org.apache.commons.httpclient.WireLogOutputStream.write(WireLogOutputStream.java:86) java.io.FilterOutputStream.write(來源不明)在 組織.apache.axis2.tra nsport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:89)
比較這對WebSphere環境的日誌,我已經找到了一些差異,因此我的問題 -
是Tomcat上的SSL配置會影響調用不同服務器的Axis2客戶端的行爲?或者,我的問題更多在操作系統級別?
關於舊環境,我注意到不止一個ssl會話被緩存了。當一次會話恢復失敗時,它只是嘗試使用不同的會話並繼續通話。然而,在新的服務器上,我只見過一個會話被創建並被緩存。恢復時,它一直試圖在不同的端口恢復相同的會話,但保持失敗。因爲這是唯一的會議,所以如果不能嘗試不同的會議,也不能創建新的會話。我的問題是爲什麼只有一個會話創建,並且它是一個配置問題,以啓用緩存多個會話?
任何幫助/指針非常感謝。