Razones oficiales para "Cancelación de conexión causada por software: error de escritura de socket"

Dado este fragmento de traza de pila

Causado por: java.net.SocketException: el software provocó el aborto de la conexión: error de escritura del socket
en java.net.SocketOutputStream.socketWrite0 (Método nativo)

Intenté responder las siguientes preguntas:

¿Qué código está lanzando esta excepción? (¿JVM? / ¿Tomcat? / ¿Mi código?)¿Qué causa que esta excepción sea lanzada?

Respecto al # 1:

La fuente JVM de Sun no contiene este mensaje exacto, pero creo que el textoCancelación de conexión causada por software: error de escritura de socket es de la implementación nativa deSocketOutputStream:

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

Respecto al # 2

Supongo que se debe a que el cliente ha finalizado la conexión, antes de obtener la respuesta completa (por ejemplo, envió una solicitud, pero antes de obtener la respuesta completa, se cerró / finalizó / se desconectó)

Preguntas:

¿Son correctas las suposiciones anteriores (# 1 y # 2)?¿Se puede diferenciar esto de la situación: "no se pudo escribir al cliente, debido a un error de red en elservidor ¿Lado "? ¿O eso haría el mismo mensaje de error?Y lo más importante:¿Hay un documento oficial (por ejemplo, de Sun) que indique lo anterior?

Necesito tener una prueba de que este seguimiento de pila es la "falla" del cliente de socket, y no hay nada que el servidor pudiera haber hecho para evitarlo. (excepto la captura de la excepción, o el uso de un SocketOutputStream de Sun JVM, aunque ambos no evitan realmente el hecho de que el cliente haya terminado)

Respuestas a la pregunta(12)

Su respuesta a la pregunta