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