Offizielle Gründe für "Software verursachter Verbindungsabbruch: Socket-Schreibfehler"

Angesichts dieses Stack-Trace-Snippets

Auslöser: java.net.SocketException: Software verursachte Verbindungsabbruch: Socket-Schreibfehler
at java.net.SocketOutputStream.socketWrite0 (native Methode)

Ich habe versucht folgende Fragen zu beantworten:

Welcher Code löst diese Ausnahme aus? (JVM? / Tomcat? / Mein Code?)Wodurch wird diese Ausnahme ausgelöst?

Zu # 1:

Die JVM-Quelle von Sun enthält nicht genau diese Nachricht, aber ich denke, der TextSoftware verursacht Verbindungsabbruch: Socket-Schreibfehler stammt aus der nativen Implementierung vonSocketOutputStream:

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

In Bezug auf # 2

Meine Vermutung ist, dass es verursacht wird, wenn der Client die Verbindung beendet hat, bevor die vollständige Antwort erhalten wurde (z. B. eine Anfrage gesendet wurde, aber bevor die vollständige Antwort erhalten wurde, wurde sie geschlossen / beendet / offline)

Fragen:

Sind die obigen Annahmen korrekt (Nr. 1 und Nr. 2)?Kann dies von der Situation abweichen: "Konnte aufgrund eines Netzwerkfehlers auf dem nicht auf den Client schreibenServer Seite "? oder würde das die selbe Fehlermeldung ausgeben?Und am wichtigsten:Gibt es ein offizielles Dokument (z. B. von Sun), in dem das oben Gesagte aufgeführt ist?

Ich brauche einen Beweis, dass dieser Stack-Trace der "Fehler" des Socket-Clients ist, und es gibt nichts, was der Server hätte tun können, um dies zu vermeiden. (Außer, dass Sie die Ausnahme abfangen oder einen Nicht-Sun-JVM-SocketOutputStream verwenden, obwohl beide nicht wirklich vermeiden, dass der Client beendet wurde.)

Antworten auf die Frage(12)

Ihre Antwort auf die Frage