java - 如何在 Java 11 http 客户端中保持连接

标签 java http2 java-11 java-http-client

我将 Java 11 HttpClient 与 HTTP/2 结合使用,需要保持连接几分钟,但构建器没有设置它的选项。有没有办法指定它并让客户端保持连接一段时间?

最佳答案

如果您构建一个标准的 HttpClient,例如使用 HttpClient.newHttpClient(); 默认创建一个连接池。默认情况下,此池使连接保持 Activity 状态 1200 秒(20 分钟)。

如果您想更改保持 Activity 超时,您可以使用属性 jdk.httpclient.keepalive.timeout 来实现。然而,当加载类 jdk.internal.net.http.ConnectionPool 时,该值只会被读取一次。之后就不能再更改了。

因此您必须为整个 JVM 设置此属性:

-Djdk.httpclient.keepalive.timeout=99999

或者在 ConnectionPool 类加载之前的运行时:

System.setProperty("jdk.httpclient.keepalive.timeout", "99999");

第三种选择是使用名为 ${java.home}/conf/net.properties 的文件并在其中设置属性。

关于java - 如何在 Java 11 http 客户端中保持连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53617574/

相关文章:

java - 管理java游戏卡操作。如何?

java - GWT 中 ScriptInjector 的使用

nginx - 带有 http2 的 nginx 背后的 asp.net 核心 - 远程 ip 始终为 127.0.0.1

与非推送 Assets 相比,推送 Assets 的 HTTP2 延迟

django - 如何使用 ShimmerCat 提供 Django 静态文件?

java - Hibernate 返回先前加载的实体的代理

java - 如何合并和打印两个排序的整数数组

Java 8 到 Java 11 : package com. sun.jndi.ldap 不可见

Java 11 on AWS beanstalk for Spring boot 项目

java - 使用Java 8编译Gradle Java项目但使用Java 11运行测试