Как сохранить соединение в HTTP-клиенте Java 11 - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Java 11 HttpClient с HTTP / 2 и мне нужно поддерживать соединение в течение нескольких минут, но у разработчика нет возможности установить его.Есть ли способ указать это и заставить клиента поддерживать соединение в течение некоторого времени?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Если вы строите стандартный 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 и установке там свойства.

0 голосов
/ 04 декабря 2018

По умолчанию оба соединения HTTP / 2 и HTTP / 1.1 остаются активными.Существуют некоторые исключения, когда несколько одновременных подключений открываются к одному и тому же хосту - тогда только одно из них будет оставаться активным.

...