Учитывая этот фрагмент трассировки стека
Вызвано: java.net.SocketException: Программное обеспечение вызвало прерывание соединения: ошибка записи сокета at java.net.SocketOutputStream.socketWrite0 (Native Метод)
Я попытался ответить на следующие вопросы:
- Какой код выбрасывает это исключение? (JVM?/Tomcat?/Мой код?)
- Что вызывает это исключение?
Относительно # 1:
Источник Sun JVM не содержит этого точного сообщения, но я думаю, что текстовое программное обеспечение вызвало прерывание соединения: ошибка записи сокета из встроенной реализации SocketOutputStream
:
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
int len) throws IOException;
Относительно # 2
Я предполагаю, что это вызвано, когда клиент завершил соединение, прежде чем получить полный ответ (например, отправил запрос, но прежде чем получить полный ответ, он был закрыт/завершен/отключен)
Вопросы:
- Правильны ли следующие допущения (# 1 и # 2)?
- Может ли это отличаться от ситуации: "Не удалось написать клиенту из-за сетевой ошибки на стороне сервера"? или будет отображать одно и то же сообщение об ошибке?
- И самое главное: Есть ли официальный документ (например, от Sun), указав выше?
Мне нужно иметь доказательство того, что эта трассировка стека является "ошибкой" сокета клиента, и ничего не может сделать сервер, чтобы его избежать. (за исключением исключения или использования не SUN JVM SocketOutputStream, хотя оба не исключают того, что клиент завершил работу)