我正在将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/

10-15 13:29