Tomcat, HTTP Keep-Alive et Java's HttpsUrlConnection

J'ai deux serveurs Tomcat qui ont besoin de maintenir une connexion persistante de couper vers le bas sur le protocole SSL handshake. Un serveur (proxy) se trouve dans une zone DMZ, tandis que l'autre est à l'abri derrière un autre pare-feu. Le proxy fondamentalement juste exécute un simple servlet qui effectue certaines vérifications avant la transmission de la demande au cours de la machine. Sur une demande initiale, les machines d'échange de certificats avant d'effectuer le travail réel. C'est pourquoi j'aimerais maintenir une connexion persistante avec un délai d'attente de quelques minutes.

De parler au serveur sécurisé de la servlet sur le serveur proxy utilise HttpsUrlConnection. J'ai mis en place WireShark et j'ai remarqué que peu importe ce que keepAliveTimeout valeur que j'ai mis pour le connecteur sécurisé de la machine, la connexion TCP se ferme au bout de 5 ou 10 secondes. Ce nombre semble correspondre avec ce que j'ai lu est le délai d'attente par défaut et comment Java gère HTTP Keep-Alive. Cette lien explique que Java honneurs de la Keep-Alive délai d'attente s'il est envoyé par le serveur, sinon, il utilise les 5 secondes (connexions directes) ou 10 secondes (pour les connexions proxy) avant de fermer la connexion.

Ce que j'essaie de savoir comment puis-je la force de Tomcat pour envoyer le Keep-Alive-tête. Non, Connection: Keep-Alivemais Keep-Alive: timeout=x.

J'ai expérimenté avec le serveur HTTP Apache et la modification de la keepAliveTimeout dans httpd.conf cause le Keep-Alive-tête pour changer sa valeur de délai d'expiration. En outre, Java ne respecter ce délai.

Mise à JOUR (12/23/11): Après l'exécution de quelques expériences, j'ai essayé de fouetter jusqu'rapide et sale de code à l'aide d'Apache HttpClient (3.1) plutôt que de HttpsUrlConnection. Il semble que HttpClient, lorsqu'elle est définie à l'utilisation Keep-Alive, attend simplement que le serveur ferme la connexion. Je ne sais pas combien de temps il faudra attendre. Je suis en tournage pour garder la connexion HTTP vivant pendant 3 à 5 minutes.

source d'informationauteur James Sheppard