Вот некоторая информация о кеше keep-alive.Вся эта информация относится к Java 6, но, вероятно, также точна для многих предыдущих и более поздних версий.
Из того, что я могу сказать, код сводится к:
- Если удаленныйсервер отправляет заголовок «Keep-Alive» со значением «timeout», которое может быть проанализировано как положительное целое число, это количество секунд используется для timeout.
- Если удаленный сервер отправляет «Keep-Alive»"header, но у него нет значения" timeout ", которое может быть проанализировано как положительное целое число и " usingProxy "равно true, тогда время ожидания равно 60 секундам.
- Во всех остальныхВ некоторых случаях время ожидания составляет 5 секунд.
Эта логика разделена между двумя местами: вокруг строки 725 из sun.net.www.http.HttpClient (в "parseHTTPHeader"метод), и вокруг строки 120 sun.net.www.http.KeepAliveCache (в методе "put").
Итак, есть два способа управлениявремя ожидания:
- Управление удаленным сервером и настройка его отправкиKeep-Alive header с правильным полем тайм-аута
- Измените исходный код JDK и создайте свой собственный.
Можно подумать, что можно было бы изменить явно произвольную пятисекунднуюпо умолчанию без перекомпиляции внутренних классов JDK, но это не так. ошибка была подана в 2005 году с просьбой предоставить эту возможность, но Sun отказалась предоставить ее.