2009-07-17 8 views
0

Ich habe einen Achsen-Webdienst in Tomcat ausgeführt. Clients stellen Verbindungen her, ohne eine Verbindung zu senden: Schließen Sie den Header in HTTP 1.1, was bedeutet, dass der Standard Keep-Alive ist. Leider scheint der Client ein Problem zu haben und wenn eine Ausnahme auftritt, schließt der Client die Verbindung nicht. Da diese Clients viel Datenverkehr in Batch-Jobs senden, verschlingt dies schnell alle meine Verbindungen. Ich möchte meinen Webdienst zwingen, jede Verbindung zu schließen, sobald ein bestimmter Handler (erweitert BasicHandler) abgeschlossen ist.Axis-Webdienst wird beibehalten

Wie mache ich das? I.e. Wie erzwinge ich den Server zum Schließen einer Verbindung nach dem Aufruf von BasicHandler # invoke()?

Antwort

2

In Ihrer Tomcats server.xml Datei finden Sie die HTTP Connector Definition (es ist das Element mit protocol = "HTTP/1.1"), und fügen Sie das Keepalivetimeout Attribut, wie hier beschrieben:

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

Sie müssen mit verschiedenen Werten experimentieren, um zu sehen, welches Verhalten Ihnen gefällt. Sehen Sie sich auch die anderen Einstellungen an, einige könnten Ihnen nützlich sein.

Beachten Sie, dass dies die Tomcat 6-Dokumentation ist, damit nicht alle Optionen auf Tomcat 5 funktionieren. Überprüfen Sie daher den gleichen Teil des Tomcat 5-Dokuments.

+0

Ich wusste über diese Option. Das Problem ist, dass es serverweit ist. Ich möchte nicht mit meinem JSP und Servlet Keep Alive Timeout zu tun haben. Nur dieser eine Webservice. – jcb

+0

HTTP-Behandlung ist jedoch nicht für die Anwendung verfügbar. Ich empfehle Ihnen, einen anderen HTTP-Connector in server.xml an einem anderen Port zu definieren und die Web-Service-Clients dazu zu bringen, diesen zu verwenden. – skaffman

+0

Wie wäre es auch mit einem Upvote? :) – skaffman

Verwandte Themen