Officiel des raisons pour “Logiciel a provoqué l'abandon de la connexion: prise d'erreur d'écriture”

Compte tenu de cette trace de la pile d'extrait de

Causés par: java.net.Exception socketexception:
Logiciel a provoqué l'abandon de la connexion:
prise d'erreur d'écriture
à
java.net.SocketOutputStream.socketWrite0(Native
La méthode)

J'ai essayé de répondre aux questions suivantes:

  1. Ce code est de lancer cette exception? (JVM?/Tomcat?/Mon code?)
  2. Quelles sont les causes de cette exception?

Sujet n ° 1:

De Sun JVM source ne contient pas de ce message exact, mais je pense que le texte Logiciel a provoqué l'abandon de la connexion: prise d'erreur d'écriture est à partir de l'implémentation native de SocketOutputStream:

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

Sujet #2

Ma conjecture est qu'il est causé lorsque le client a mis fin à la connexion, avant d'obtenir la réponse complète (par exemple envoyé une demande, mais avant d'obtenir la réponse complète, il est fermé /terminé /hors ligne)

Questions:

  1. Sont les hypothèses énoncées ci-dessus correcte (#1 et #2)?
  2. Cela peut-il être diffrentiated de la situation: "impossible d'écrire dans le client, en raison d'une erreur de réseau sur le serveur côté"? ou serait-ce de rendre le même message d'erreur?
  3. Et le plus important: Est-il un document officiel (e.g du Soleil), en indiquant ci-dessus?

J'ai besoin d'avoir une preuve que cette trace de la pile est la socket du client "faute", et il n'y a rien que le serveur pourrait avez fait pour l'éviter. (à l'exception de la capture de l'exception, ou à l'aide d'un non JVM de Sun SocketOutputStream, bien que les deux n'ont pas vraiment d'éviter le fait que le client a résilié)

J'ai ce problème lors de l'annulation d'un téléchargement avec Firefox
Hey Eran je reçois également cette exception lors de l'envoi/de l'écriture (outs.write(audioBytes);) byte[] à OutputStream. Lorsque l'audio est en sillonnant et lors de la lecture si l'utilisateur clique sur un autre menu (qui envoient une demande de serveur) j'ai eu le même message d'erreur sur la console. donc, il est sûr d'ignorer cette exception?
Il semble, oui. L'essentiel de ce que les réponses décrire, c'est un Windows d'erreur spécifique, mais je suppose que sur Linux, vous obtiendrez la même exception, avec juste un libellé différent... (Mes termes profanes de comprendre fondamentalement, c'est que cela est causé lorsque vous envoyez via un socket à une certaine distance l'emplacement X et X s'est déconnecté au milieu, mais je suis sûr que ce n'est pas la façon la plus précise pour la décrire)
Pour moi ce qui s'est passé lorsque la base de données du serveur a été redémarré et l'application est encore en train de requête à l'aide de connexions déjà ouvertes. Je ne sais pas pourquoi elles n'ont pas été actualisés comme nous sommes à l'aide de DBCP en fonction de la mutualisation. Mais le redémarrage de la demande fixe le problème.

OriginalL'auteur Eran Medan | 2010-01-24