我正在使用HttpClient
带有 HTTP/2 的 Java 11,并且需要保持连接活动几分钟,但构建器没有设置它的选项。有没有办法指定这一点并使客户端保持连接一段时间?
问问题
7646 次
2 回答
12
如果你构建一个标准的 HttpClient,例如HttpClient.newHttpClient();
默认使用一个连接池。默认情况下,此池使连接保持活动状态 1200 秒(20 分钟)。
如果您想更改保持活动超时,您可以使用 property 来做到这一点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
并在其中设置属性。
于 2018-12-04T20:11:35.400 回答
1
默认情况下,HTTP/2 和 HTTP/1.1 连接都保持活动状态。当几个并发连接打开到同一个主机时会有一些例外 - 然后只有一个会保持活动状态。
于 2018-12-04T17:41:16.250 回答