2009-07-17 6 views
0

J'ai un service Web Axe fonctionnant sous Tomcat. Les clients établissent des connexions sans envoyer d'en-tête Connection: close dans HTTP 1.1, ce qui signifie que la valeur par défaut est Keep-Alive. Malheureusement, le client semble avoir un problème et quand il obtient une exception, le client ne ferme pas la connexion. Étant donné que ces clients envoient beaucoup de trafic dans les travaux par lots, cela gâche rapidement toutes mes connexions. Je veux forcer mon service Web à fermer chaque connexion dès qu'un gestionnaire particulier (extends BasicHandler) se termine.Axis Web Service Keep Alive

Comment faire? C'est à dire. comment puis-je forcer le serveur à fermer une connexion après avoir appelé BasicHandler # invoke()?

Répondre

2

Dans votre fichier server.xml de tomcat, trouver la définition du connecteur HTTP (il est l'élément avec protocole = "HTTP/1.1") et ajoutez l'attribut KeepAliveTimeout, comme détaillé ici:

http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

Vous devrez expérimenter avec différentes valeurs pour voir ce qui vous donne le comportement que vous voulez. Découvrez également les autres paramètres, certains peuvent vous être utiles. Notez que ce sont les documents Tomcat 6, donc toutes les options ne peuvent pas fonctionner sur tomcat 5, donc vérifiez la même partie des documents de tomcat 5.

+0

Je connaissais cette option. Le problème est que c'est un serveur. Je ne veux pas gâcher avec mon JSP et servlet garder le temps mort. Juste ce webservice. – jcb

+0

La gestion HTTP n'est pas exposée à l'application, cependant. Je vous suggère de définir un autre connecteur HTTP dans server.xml, sur un port différent, et de faire en sorte que les clients du service Web l'utilisent. – skaffman

+0

Que diriez-vous d'un upvote aussi? :) – skaffman