java 11 HttpClient 即使禁用 TLS.1.3 也会导致无限的 SSL 循环

2023-12-25

我面临标准 java http 客户端的问题。由于某种原因,我还不知道它会进入无限循环并利用我拥有的所有CPU。下面是示例堆栈跟踪和无限循环运行的方法。

"HttpClient-1-Worker-34" #232 daemon prio=5 os_prio=0 cpu=37704.71ms elapsed=231.22s tid=0x00007f1580279000 nid=0x31fc runnable  [0x00007f1575059000]
   java.lang.Thread.State: RUNNABLE
    at jdk.internal.net.http.common.SSLFlowDelegate$Writer.processData([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:758)
    at jdk.internal.net.http.common.SSLFlowDelegate$Writer$WriterDownstreamPusher.run([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:645)
    at jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:147)
    at jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:198)
    at jdk.internal.net.http.common.SequentialScheduler.runOrSchedule([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:271)
    at jdk.internal.net.http.common.SequentialScheduler.runOrSchedule([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:224)
    at jdk.internal.net.http.common.SSLFlowDelegate$Writer.triggerWrite([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:722)
    at jdk.internal.net.http.common.SSLFlowDelegate.doHandshake([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:1024)
    at jdk.internal.net.http.common.SSLFlowDelegate.doClosure([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:1094)
    at jdk.internal.net.http.common.SSLFlowDelegate$Reader.unwrapBuffer([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:500)
    at jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:389)
    - locked <0x0000000613d63450> (a java.lang.Object)
    at jdk.internal.net.http.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run([email protected] /cdn-cgi/l/email-protection/SSLFlowDelegate.java:263)
    at jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:175)
    - locked <0x0000000613d63488> (a java.lang.Object)
    at jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:147)
    at jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run([email protected] /cdn-cgi/l/email-protection/SequentialScheduler.java:198)
    at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected] /cdn-cgi/l/email-protection/ThreadPoolExecutor.java:1128)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected] /cdn-cgi/l/email-protection/ThreadPoolExecutor.java:628)
    at java.lang.Thread.run([email protected] /cdn-cgi/l/email-protection/Thread.java:834)

我认为问题的根本原因是this https://stackoverflow.com/questions/54485755/java-11-httpclient-leads-to-endless-ssl-loop一。但禁用 TLSv1.3 后问题并没有消失。

我在应用程序启动时使用调试检查了 TLSv1.3 是否以以下方式禁用:

这是我传入的 JVM 参数:

-Djdk.tls.disabledAlgorithms="TLSv1.3"
-Dhttps.protocols="TLSv1,TLSv1.1,TLSv1.2"
-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"
-Djdk.tls.server.protocols="TLSv1,TLSv1.1,TLSv1.2"

确保 TLSv1.3 已禁用。

请问,您知道问题的原因是什么吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 11 HttpClient 即使禁用 TLS.1.3 也会导致无限的 SSL 循环 的相关文章

  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐