亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 java 11 上的 SSL 通信期間發生 SocketException 時

在 java 11 上的 SSL 通信期間發生 SocketException 時

楊__羊羊 2022-12-15 16:43:23
我應該如何實現它才能在 java11 上使用httpclient重試 SSL 通信?如下所示覆蓋 DefaultHttpRequestRetryHandler 是否更好?有更好的方法嗎?  public class HttpRequestRetryHandler extends DefaultHttpRequestRetryHandler {    @Override    public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {      IOException cause = exception;      if (exception instanceof SSLException) {        if (exception.getCause() != null && exception.getCause() instanceof IOException) {          cause = (IOException) exception.getCause();        }      }      return super.retryRequest(cause, executionCount, context);    }  }在 Java 11 中,不會重試 SocketException,因為 SocketException 是用 SSLException 包裹的。我閱讀了以下內容。https://bugs.openjdk.java.net/browse/JDK-8214339http://hg.openjdk.java.net/jdk-updates/jdk11u/rev/18b4acfaaa97if ((cause != null) && (cause instanceof IOException)) {    ssle = new SSLException(reason);} https://hc.apache.org/httpcomponents-client-ga/tutorial/html/fundamentals.htmlDefaultHttpRequestRetryHandler 在發生 SSLException 時不會重試。使用java11時隨機出現以下錯誤,概率小于0.01%。
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

我創建了 HttpRequestRetryHandler 類。


  public class HttpRequestRetryHandler extends DefaultHttpRequestRetryHandler {


    @Override

    public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {

      IOException cause = exception;

      if (exception instanceof SSLException) {

        if (exception.getCause() != null && exception.getCause() instanceof IOException) {

          cause = (IOException) exception.getCause();

        }

      }

      return super.retryRequest(cause, executionCount, context);

    }

  }

并將其設置為 HttpClientBuilder。


CloseableHttpClient httpclient = HttpClients.custom()

        .setRetryHandler(new HttpRequestRetryHandler())

        .build();

結論

SSL 通信質量與使用 java8 時相同。

服務器或網絡底層問題依然存在,但java11的影響已經解決。


查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號