Tomcat, HTTP Keep-Alive и Java HttpsUrlConnection

У меня есть два сервера Tomcat, которым необходимо поддерживать постоянное соединение для сокращения SSL-квитирования. Один сервер (прокси-сервер) находится в демилитаризованной зоне, а другой находится в безопасности за другим брандмауэром. Прокси-сервер в основном просто запускает простой сервлет, который выполняет некоторую проверку работоспособности перед отправкой запросов на защищенную машину. По первому требованию машины обмениваются сертификатами перед выполнением реальной работы. Поэтому я хотел бы поддерживать постоянную связь с таймаутом в несколько минут.

Чтобы поговорить с защищенным сервером, сервлет на прокси используетHttpsUrlConnection, Я настроил WireShark и заметил, что независимо от того, чтоkeepAliveTimeout Значение, которое я установил для соединителя на защищенном компьютере, TCP-соединение закрывается примерно через 5 или 10 секунд. Похоже, это число совпадает с тем, что я прочитал, по умолчанию, и как Java обрабатывает HTTP Keep-Alive. Этотссылка объясняет, что Java чтитKeep-Alive Тайм-аут, если он отправлен сервером, в противном случае он использует 5 секунд (прямые подключения) или 10 секунд (прокси-подключения), прежде чем он закрывает соединение.

Я пытаюсь понять, как заставить Tomcat отправить заголовок Keep-Alive. Не,Connection: Keep-Alive, ноKeep-Alive: timeout=x.

Я экспериментировал с сервером Apache HTTP и модифицировалkeepAliveTimeout в httpd.conf заголовок Keep-Alive меняет значение времени ожидания. Кроме того, Java соблюдает этот тайм-аут.

ОБНОВЛЕНИЕ (23.12.11): Проведя еще несколько экспериментов, я попытался создать быстрый и грязный код, используя Apache HttpClient (3.1), а неHttpsUrlConnection, Похоже, что HttpClient, когда он настроен на использование Keep-Alive, просто ждет, пока сервер закроет соединение. Я не знаю, как долго это будет ждать. Я снимаю, чтобы сохранить HTTP-соединение живым в течение 3-5 минут.

Ответы на вопрос(3)

Ваш ответ на вопрос