我正在将Java 11 HttpClient
与HTTP / 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连接均保持活动状态。当打开多个并发连接到同一主机时,会有一些例外-那么只有其中一个会保持活动状态。