75 votes

java.net.SocketException : Le logiciel a provoqué l'abandon de la connexion : recv failed

Je n'ai pas réussi à trouver une réponse adéquate à la signification exacte de l'erreur suivante :

java.net.SocketException: Software caused connection abort: recv failed

Notes :

  • Cette erreur est peu fréquente et imprévisible ; cependant, si vous obtenez cette erreur, toutes les futures demandes d'URI échoueront également.
  • La seule solution qui fonctionne (aussi, seulement occasionnellement) est de redémarrer Tomcat et/ou la machine actuelle (Windows dans ce cas).
  • L'URI est bien disponible (ce qui est confirmé en demandant au navigateur d'effectuer la récupération).

Code pertinent :

BufferedReader reader;
try { 
 URL url = new URL(URI);
 reader = new BufferedReader(new InputStreamReader(url.openStream())));
} catch( MalformedURLException e ) { 
 throw new IOException("Expecting a well-formed URL: " + e); 
}//end try: Have a stream

String buffer;
StringBuilder result = new StringBuilder();
while( null != (buffer = reader.readLine()) ) { 
 result.append(buffer); 
}//end while: Got the contents.
reader.close();

25voto

AdamC Points 5828

Cela signifie généralement qu'il y a eu une erreur de réseau, comme un dépassement de délai TCP. Je commencerais par placer un renifleur (wireshark) sur la connexion pour voir si vous pouvez constater des problèmes. S'il y a une erreur TCP, vous devriez pouvoir la voir. Vous pouvez également vérifier les journaux de votre routeur, si cela s'applique. Si le sans fil est impliqué quelque part, c'est une autre source pour ce type d'erreurs.

23voto

desbocages Points 1

Cela se produit également si votre client TLS ne parvient pas à être authentifié par le serveur configuré pour exiger l'authentification du client.

4voto

pfranza Points 1504

La seule fois où j'ai vu quelque chose comme ça se produire, c'est lorsque j'ai une mauvaise connexion, ou lorsque quelqu'un ferme le socket que j'utilise depuis un contexte de thread différent.

4voto

Ken Points 1693

Accédez-vous à des données http ? Pouvez-vous utiliser la bibliothèque HttpClient au lieu de la bibliothèque standard ? Cette bibliothèque dispose de plus d'options et fournit de meilleurs messages d'erreur.

http://hc.apache.org/httpclient-3.x/

2voto

Anantharaman Points 37

Essayez d'ajouter 'autoReconnect=true' à la chaîne de connexion jdbc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X