Tomcat, HTTP Keep-Alive e HttpsUrlConnection do Java

Tenho dois servidores Tomcat que precisam manter uma conexão persistente para reduzir o handshaking SSL. Um servidor (o proxy) fica em uma DMZ enquanto o outro está atrás de outro firewall em segurança. O proxy basicamente executa um servlet simples que faz uma verificação de integridade antes de encaminhar solicitações para a máquina segura. Em uma solicitação inicial, as máquinas trocam certificados antes de executar o trabalho real. Portanto, eu gostaria de manter uma conexão persistente com um tempo limite de alguns minutos.

Para falar com o servidor seguro, o servlet no proxy usaHttpsUrlConnection. Eu configurei o WireShark e notei que não importa o qkeepAliveTimeout valor definido para o conector na máquina segura, a conexão TCP é fechada após cerca de 5 ou 10 segundos. Esse número parece coincidir com o que eu li é o tempo limite padrão e como o Java lida com o HTTP Keep-Alive. Esteligaçã explica que o Java honra oKeep-Alive timeout se for enviado pelo servidor, caso contrário, ele usa 5 segundos (conexões diretas) ou 10 segundos (conexões proxy) antes de fechar a conexã

O que estou tentando descobrir é como posso forçar o Tomcat a enviar o cabeçalho Keep-Alive. Não,Connection: Keep-Alive, masKeep-Alive: timeout=x.

Eu experimentei o servidor HTTP Apache e modifique okeepAliveTimeout no httpd.conf faz com que o cabeçalho Keep-Alive altere seu valor de tempo limite. Além disso, o Java honra esse tempo limite.

UPDATE (23/12/11): Depois de executar mais algumas experiências, tentei criar um código rápido e sujo usando o HttpClient (3.1) do Apache em vez deHttpsUrlConnection. Parece que o HttpClient, quando configurado para usar o Keep-Alive, simplesmente aguarda o servidor fechar a conexão. Eu não sei quanto tempo isso vai esperar. Estou filmando para manter a conexão HTTP ativa por 3 a 5 minutos.

questionAnswers(3)

yourAnswerToTheQuestion