Question

    

Cette question a déjà une réponse ici:

    
            
  •              java.net.SocketException: reset Connexion                                      9 réponses                          
  •     
    

Nous voyons les erreurs de java.net.SocketException: Connection reset fréquentes mais intermittentes dans nos journaux. Nous ne savons pas à où l'erreur de Connection reset est en réalité à venir, et comment aller sur le débogage.

La question semble sans rapport avec les messages que nous essayons d'envoyer. Notez que le message est pas connection reset by peer.

Toutes les suggestions sur ce que les causes typiques de cette exception peut-être, et comment nous pourrions procéder?

Voici une trace de la pile représentant (com.companyname.mtix.sms est notre composante):

    java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
        at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
        at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
        at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
        at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
        at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
        at com.companyname.mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127)
        at com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125)
        at com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43)
        at sun.reflect.GeneratedMethodAccessor203.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at com.companyname.mtix.sms.http.filters.NoCacheFilter.doFilter(NoCacheFilter.java:63)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at com.companyname.mtix.sms.http.filters.MessageFilter.doFilter(MessageFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:46)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
    

Notre composant est une application Web, en cours d'exécution sous Tomcat, qui appelle un service Web tiers qui envoie des messages SMS, il se trouve. La ligne de notre code sur lequel l'exception est jeté de est la dernière ligne dans le code extrait de code ci-dessous.

String aggregatorResponse = null;
HttpClient httpClient = prepareHttpClient( username, password );
PostMethod postMethod = preparePostMethod( textUrl );

try {
  SybaseTextMessageBuilder builder = new SybaseTextMessageBuilder();
  URL notifyUrl = buildNotificationUrl( textMessage, codeSetManager );
  String smsRequestDocument = builder.buildTextMessage( textMessage, notifyUrl );
  LOG.debug( "Sybase MT document created as: \n" + smsRequestDocument );

  postMethod.setRequestEntity( new StringRequestEntity( smsRequestDocument ) );
  LOG.debug( "commiting SMS to aggregator: " + textMessage.toString() );
  int httpStatus = httpClient.executeMethod( postMethod );
Était-ce utile?

La solution

Le javadoc pour SocketException déclare qu'il est

  

Indique la présence il y a une erreur dans le protocole sous-jacent comme une erreur TCP

Dans votre cas, il semble que la connexion a été fermée à la fin du serveur de la connexion. Cela pourrait être un problème avec la demande que vous envoyez ou un problème à leur fin.

Pour le débogage, l'aide pourrait envisager d'utiliser un outil tel que Wireshark pour afficher les paquets réseau réels. En outre, il est un client alternatif à votre code Java que vous pouvez utiliser pour tester le service Web? Si cela a réussi, il pourrait indiquer un bogue dans le code Java.

Comme vous utilisez le client HTTP Commons consulter enregistrement des clients HTTP commun Guide . Cela vous indiquera comment connecter la demande au niveau HTTP.

Autres conseils

Cette erreur qui se passe sur votre côté et pas l'autre côté. Si l'autre côté de réinitialisation de la connexion, le message d'exception devrait dire:

java.net.SocketException reset by peer

La cause est la connexion à l'intérieur HttpClient est périmé. Vérifiez la connexion SSL rassis pour ne résout pas cette erreur. Solution:. Vider votre client et de recréer

Si vous rencontrez ce en essayant d'accéder aux services Web déployés sur un serveur Glassfish3, vous pouvez régler vos paramètres http-thread piscine. Que SocketExceptions fixes que nous avions lorsque plusieurs threads simultanés appelai le service Web.

  1. Go à la console d'administration
  2. Accédez à "Configurations" -> "config serveur" -> "pools de threads" -> "http-thread-pool"
  3. .
  4. Modifier le réglage "Max Taille du pool de threads" 5 à 32
  5. Modifier le réglage "min Taille du pool de threads" de 2 à 16
  6. Redémarrez Glassfish.

J'ai aussi tombé sur cette erreur. Dans mon cas, le problème était que j'utilisais JRE6, avec prise en charge TLS1.0 . Le serveur uniquement pris en charge TLS1.2, cette erreur a été levée.

Dans mon cas, ce fut parce que mon Tomcat a été mis avec une maxHttpHeaderSize insuffisante pour une requête SOLR particulièrement compliquée.

Espérons que cela aide quelqu'un là-bas!

Je reçois cette erreur tout le temps et considère qu'il est normal.

Il se produit quand un côté essaie de lire quand l'autre côté a déjà raccroché. Ainsi en fonction du protocole cela peut ou ne peut pas désigner un problème . Si mon code client indique spécifiquement au serveur qu'il va raccrocher, alors à la fois client et serveur peut se bloquer en même temps et ce message ne se produirait pas.

La façon dont je mets en œuvre mon code est pour le client pour accrocher juste sans dire au revoir. Le serveur peut alors attraper l'erreur et l'ignorer. Dans le contexte de HTTP, je crois un niveau du protocole permet plus d'une requête par connexion tandis que l'autre ne fonctionne pas.

Ainsi, vous pouvez voir comment potentiellement un côté pourrait garder accroché sur l'autre. Je doute l'erreur que vous recevez est de toute préoccupation et vous pourriez piratique simplement attraper pour l'empêcher de remplir vos fichiers journaux.

Cette erreur se produit sur le côté du serveur lorsque le client a fermé la connexion de la prise avant que la réponse peut être retourné sur la douille. Dans un scénario d'application web ne sont pas tous ces éléments sont dangereux, car ils peuvent être créés manuellement. Par exemple, en quittant le navigateur avant que le Reponse a été récupéré.

L'exception signifie que la prise a été fermé de façon inattendue de l'autre côté. Puisque vous appelez un service Web, cela ne devrait pas se produire - le plus probable que vous envoyez une demande qui déclenche un bogue dans le service Web.

Essayez de vous connecter toute la demande dans ces cas, et si vous remarquez quelque chose d'inhabituel. Dans le cas contraire, entrer en contact avec le fournisseur de services Web et de les envoyer votre demande connecté problématique.

Je sais que ce fil est peu vieux, mais je voudrais ajouter mes 2 cents. Nous avons eu la même erreur « réinitialisation de la connexion » juste après notre l'une des versions.

La cause racine est, notre serveur apache a été réduit pour le déploiement. Tout notre trafic tiers va à travers apache et nous obtenions erreur de réinitialisation connexion à cause de cela étant vers le bas.

Ceci est un vieux fil, mais je suis tombé java.net.SocketException: Connection reset hier.

L'application côté serveur a ses paramètres d'étranglement modifiés pour permettre seulement 1 connexion à la fois! Ainsi, les appels parfois ont vécu et parfois pas. Je l'ai résolu le problème en changeant les paramètres de limitation.

Je recevais exactement cette erreur aussi: Connection reset by peer. L'exception a été soulevée par le modèle REST de printemps sur l'exécution de la méthode de postForObject(). Pour moi, le problème était trop longue requête URL HTTP. Alors d'abord vérifier si l'URL produit est ce qu'il doit être et, si votre serveur doit vraiment être en mesure de traiter les demandes de cette longueur, il suffit d'aller à la configuration du serveur et augmenter la valeur par défaut longueur autorisée des demandes d'URL.

qui a résolu le problème pour moi, mais il faut savoir:. L'application peut ne pas fonctionner sur certains navigateurs internet, en particulier les anciens, car ils ont une longueur fixe maximum de requêtes d'URL

it helps ...

Je suis cette erreur lorsque le fichier texte que je tentais de lire contenait une chaîne qui correspond à une signature antivirus sur notre pare-feu.

FWIW, je recevais cette erreur quand je faisais accidentellement une requête GET à un point de terminaison qui attendait une requête POST. On peut supposer que c'était juste de cette façon particulière de serveurs de traiter le problème.

Je recevais cette erreur, car le port que j'ai essayé de se connecter à été fermé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top