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