Nie jestem zaznajomiony z Apache CXF, ale poniższe zasady powinny mieć zastosowanie do dowolnego środowiska opartego na Servletie Java.
Aby ustalić, czy użytkownik odłączył się (przycisk zatrzymania, zamknięta przeglądarka itp.), Serwer musi wysłać pakiet. Jeśli połączenie TCP/IP zostało zamknięte, zostanie wygenerowany IOException
.
Teoretycznie aplikacja Java może wysłać znak spacji w różnych punktach podczas przetwarzania. Numer IOException
zasygnalizuje, że klient odszedł, a przetwarzanie może zostać przerwane.
Jednak nie może być kilka problemów z tym technika:
Wysyłanie znaków podczas przetwarzania spowoduje, że odpowiedź jest „zaangażowana”, więc może to być niemożliwe do ustawienia nagłówków HTTP, ciasteczek itp na podstawie wyniku długotrwałego przetwarzania na serwerach.
Jeśli strumień wyjściowy jest buforowany, spacje nie zostaną natychmiast wysłane, a tym samym nieprzeprowadzenie odpowiedniego testu. Jako obejście może być możliwe użycie flush()
.
Może być trudno zastosować tę technikę dla danej architektury lub widoku technologii (JSP itp.). Na przykład kod renderujący stronę nie będzie w stanie wysłać typu zawartości po zatwierdzeniu odpowiedzi.