如何在Java 11 HTTP客户端中保持连接活跃

时间:2018-12-04 16:34:52

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

我正在将Java 11 HttpClient与HTTP / 2一起使用,并且需要保持几分钟的连接状态,但是构建器没有设置它的选项。有没有一种方法可以指定它并使客户端保持连接一段时间?

2 个答案:

答案 0 :(得分:3)

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

如果要更改保持活动超时,可以使用属性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的文件并在其中设置属性。

答案 1 :(得分:0)

默认情况下,HTTP / 2和HTTP / 1.1连接均保持活动状态。当打开多个并发连接到同一主机时,会有一些例外-那么只有其中一个会保持活动状态。