Ich bin nicht vertraut mit Apache CXF, aber das Folgende sollte für jedes Java-Servlet-basierte Framework gelten.
Um festzustellen, ob ein Benutzer die Verbindung getrennt hat (Stopptaste, geschlossener Browser usw.), muss der Server versuchen, ein Paket zu senden. Wenn die TCP/IP-Verbindung geschlossen wurde, wird IOException
ausgelöst.
Theoretisch könnte eine Java-Anwendung an verschiedenen Punkten während der Verarbeitung ein Leerzeichen senden. Ein IOException
würde signalisieren, dass der Client gegangen ist und die Verarbeitung abgebrochen werden kann.
Allerdings kann es ein paar Probleme mit dieser Technik sein:
Zeichen während der Verarbeitung gesendet wird bewirken, dass die Antwort „committed“ sein, so kann es unmöglich sein HTTP-Header zu setzen, Cookies, etc. basierend auf dem Ergebnis der langjährigen serverseitigen Verarbeitung.
Wenn der Ausgabestrom gepuffert ist, werden die Leerzeichen nicht sofort gesendet, wodurch kein ausreichender Test durchgeführt wird. Es kann möglich sein, flush()
als eine Problemumgehung zu verwenden.
Es kann schwierig sein, diese Technik für eine bestimmte Framework- oder Ansichtstechnologie (JSP, usw.) zu implementieren. Zum Beispiel kann der Seitenrendercode den Inhaltstyp nicht senden, nachdem die Antwort festgeschrieben wurde.