In einem JAX-WS web service, wie kann ich die force-a-Buchse schließen Sie nach jedem Soap-Aufruf zurückgegeben wird?

Ich bin mit com.Sonne.httpserver.HttpServer und javax.xml.ws.Endpoint zur Veröffentlichung eines JAX-WS web service generiert wurde, durch ausführen von wsimport auf einer bestehenden WSDL und Umsetzung der genereated-service-Schnittstelle. All dies war Teil des JDK 1.6 (JAX-WS RI 2.1.6). Meine web-service, läuft als Java-Programm ohne zusätzlichen Web-container simulieren soll eine vorhandene SOAP-service, der implementiert wurde, unter Verwendung von Apache Axis, läuft auf Tomcat. Bestehende Kunden werden ebenfalls implementiert, unter Verwendung von Apache Axis.

Das problem, das ich habe ist, dass Soap-operation, die Anrufe von den Kunden zu meiner JAX-WS service hängen für eine Weile, und dann ist Ende mit der Buchse time-out auf der Seite des Kunden. Dies tritt auf, obwohl die JAX-WS-service ist wieder in die SOAP-Antwort sofort.

Inspektion der Pakete mit tcpdump und wireshark habe ich festgestellt, dass mit den vorhandenen Axis web service, nach dem SOAP-Antwort gesendet wird vom server an den client, sendet der server eine "FIN-ACK" - Paket, zu dem die clients antwortet mit "FIN, ACK". Dies schließt alle Pakete, die relevant für die SOAP-operation. Auf der anderen Seite, wenn Sie das laufen mit der JAX-WS-service, der server sendet keinen "FIN, ACK", die nach der SOAP-Antwort an den client gesendet wird. Und scheint der client Lesen Sie den socket-input-stream für es.

Dies führt mich zu glauben, dass die JAX-WS-web-service-stack ist irgendwie halten die socket öffnen, selbst nach der Antwort auf eine SOAP-Aufruf gesendet wurde. Und es scheint, dass der client erwartet, dass die Buchse zu schließen am Ende einen SOAP-Vorgang. Ich kann leider nicht ändern, der client, sich anders zu Verhalten.

Gibt es eine Möglichkeit, konfigurieren Sie den Endpunkt oder die HttpServer-Instanzen, ich bin mit zu veröffentlichen, die JAX-WS-service, um immer einen socket schließen nach jeder SOAP-operation?

Ich habe versucht, die Einstellung der system-property http.keepAlive auf false, aber das scheint nicht zu keinen Unterschied machen.

Dank im Voraus für Eure Hilfe.

  • http.keepAlive würde nicht funktionieren, da es für die Konfiguration der httpurlconnection dass JAX-WS verwendet unter der Haube für die client-Seite
InformationsquelleAutor tom3 | 2011-09-16
Schreibe einen Kommentar