Oficjalne powody „Oprogramowanie spowodowało przerwanie połączenia: błąd zapisu gniazda”

Biorąc pod uwagę ten fragment śladu stosu

Przyczyna: java.net.SocketException: Oprogramowanie spowodowało przerwanie połączenia: błąd zapisu gniazda
at java.net.SocketOutputStream.socketWrite0 (Metoda natywna)

Próbowałem odpowiedzieć na następujące pytania:

Jaki kod rzuca ten wyjątek? (JVM? / Tomcat? / Mój kod?)Co powoduje wyrzucenie tego wyjątku?

Odnośnie # 1:

Źródło JVM firmy Sun nie zawiera tego dokładnego komunikatu, ale myślę o tekścieOprogramowanie spowodowało przerwanie połączenia: błąd zapisu gniazda pochodzi z natywnej implementacjiSocketOutputStream:

private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
                 int len) throws IOException;

Odnośnie # 2

Domyślam się, że jest to spowodowane tym, że klient zakończył połączenie, zanim otrzyma pełną odpowiedź (np. Wysłał żądanie, ale przed uzyskaniem pełnej odpowiedzi, został zamknięty / zakończony / offline)

Pytania:

Czy powyższe założenia są poprawne (# 1 i # 2)?Czy można to odróżnić od sytuacji: „nie można napisać do klienta z powodu błędu sieciowego w sieciserwer strona?I najważniejsze:Czy istnieje oficjalny dokument (np. Od Słońca) zawierający powyższe informacje?

Potrzebuję dowodu, że ten ślad stosu jest „błędem” klienta gniazda i że serwer nie mógł nic zrobić, aby tego uniknąć. (z wyjątkiem przechwytywania wyjątku lub korzystania z SocketOutputStream firmy innej niż Sun JVM, choć w rzeczywistości nie unikamy tego, że klient zakończył działanie)

questionAnswers(12)

yourAnswerToTheQuestion