Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              java.net.SocketException: Connection reset                                      9 Antworten                          
  •     
    

Wir sehen häufig, aber intermittierende java.net.SocketException: Connection reset Fehler in unseren Protokollen. Wir sind nicht sicher, wo die Connection reset Fehler tatsächlich herkommt und wie über das Debuggen gehen.

Die Frage erscheint die Nachrichten nicht verwandt zu sein, wir zu senden versuchen. Beachten Sie, dass die Meldung nicht connection reset by peer.

Irgendwelche Vorschläge, was die typischen Ursachen für diese Ausnahme sein könnten, und wie könnten wir fortfahren?

Hier ist ein repräsentativer Stack-Trace (com.companyname.mtix.sms ist unsere Komponente):

    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)
    

Unsere Komponente ist eine Web-Anwendung, unter Tomcat ausgeführt wird, dass ein Dritter Webdienst aufruft, die SMS-Nachrichten sendet, geschieht es so. Die Linie unseres Codes, auf das die Ausnahme von geworfen wird ist die letzte Zeile im Code-Snippet unten.

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 );
War es hilfreich?

Lösung

Die javadoc für Socket besagt, dass es

  

Geworfen, um anzuzeigen, dass es ein Fehler in dem zugrunde liegenden Protokoll, wie ein TCP-Fehler

In Ihrem Fall scheint es, dass die Verbindung vom Server Ende der Verbindung geschlossen wurde. Dies könnte ein Problem mit der Bitte, die Sie senden oder ein Problem an ihrem Ende.

Zur Unterstützung Debuggen Sie bei Verwendung eines Werkzeugs aussehen könnte wie Wireshark die tatsächlichen Netzwerkpakete zu sehen. Außerdem gibt es eine alternative Client Java-Code, dass Sie den Web-Service zu testen, verwenden könnten? Wenn dies erfolgreich ist, kann es einen Fehler in dem Java-Code angeben.

Wie Sie Commons HTTP-Client verwenden haben einen Blick auf die Führer . Dies wird Ihnen sagen, wie die Anforderung an den HTTP-Ebene zu protokollieren.

Andere Tipps

Dieser Fehler geschieht auf Ihrer Seite und die andere Seite nicht. Wenn die andere Seite die Verbindung zurückgesetzt, dann sollte die Ausnahmemeldung sagen:

java.net.SocketException reset by peer

Die Ursache ist die Verbindung innerhalb HttpClient abgestanden ist. Prüfen abgestanden Verbindung für SSL diesen Fehler nicht beheben. Lösung:. Dump Client und neu erstellen

Wenn Sie diese Erfahrung versuchen, Web-Services auf einem Server bereitgestellt Glassfish3 zuzugreifen, könnten Sie Ihre http-Thread-Pool zu stimmen Einstellungen möchten. Dass feste SocketExceptions wir hatten, als viele gleichzeitige Threads den Webservice rief.

  1. Zum Admin-Konsole
  2. Navigieren Sie zu "Konfigurationen" -> "Serverkonfiguration" -> "Thread-Pools" -> "http-thread-pool"
  3. .
  4. Einstellung ändern "Max Thread Pool Size" 5-32
  5. Einstellung ändern "Min Thread Pool Size" 2-16
  6. Restart Glassfish.

Ich habe stolpern auch auf diesen Fehler. In meinem Fall war das Problem war ich mit JRE6, mit Unterstützung für TLS1.0 . Der Server unterstützt nur TLS1.2, so wurde dieser Fehler ausgelöst.

In meinem Fall war dies, weil meine Tomcat mit einer unzureichenden maxHttpHeaderSize für eine besonders komplizierte SOLR Abfrage festgelegt wurde.

Hope, das hilft jemand da draußen!

Ich erhalte diese Fehler die ganze Zeit und halten es normal.

Es passiert, wenn eine Seite zu lesen versucht, wenn die andere Seite bereits aufgehängt. So je nach Protokoll kann diese oder auch nicht ein Problem bezeichnen. Wenn mein Client-Code auf den Server speziell zeigt, dass es geht, um aufzulegen, dann Client und Server können gleichzeitig auflegen und diese Meldung nicht passieren würde.

So wie ich meinen Code implementieren ist für den Kunden einfach auflegen, ohne sich zu verabschieden. Der Server kann dann den Fehler abzufangen und es ignorieren. Im Zusammenhang mit der HTTP, glaube ich, eine Ebene des Protokolls mehr als eine Anfrage pro Verbindung erlaubt, während der andere nicht.

So können Sie sehen, wie möglicherweise einer Seite auf die andere auflegt halten konnte. Ich bezweifle, dass der Fehler, der Sie ist von jeder piratical Sorge erhalten, und man konnte es einfach fangen, damit ihn nicht Ihre Log-Dateien füllen.

Dieser Fehler tritt auf der Serverseite, wenn der Client die Socket-Verbindung geschlossen, bevor die Antwort auf dem Sockel zurückgeführt werden könnte. In einem Web-App-Szenario sind nicht alle diese gefährlich, da sie manuell erstellt werden können. Zum Beispiel durch den Browser verlassen, bevor wurde die reponse abgerufen werden.

Die Ausnahme bedeutet, daß die Buchse unerwartet von der anderen Seite geschlossen. Da Sie einen Web-Service anrufen, sollte dies nicht passieren - höchstwahrscheinlich sind Sie eine Anfrage senden, die einen Fehler in dem Web-Service auslöst.

Versuchen Sie, die gesamte Anforderung in den Fällen, die Anmeldung, und sehen, ob Sie etwas Ungewöhnliches bemerken. Andernfalls mit den Web-Service-Provider in Verbindung und ihnen Ihre protokolliert problematische Anfrage senden.

Ich weiß, dass dieses Thema wenig alt ist, möchte aber meinen 2 Cent hinzuzufügen. Wir hatten die gleichen „Verbindung zurückgesetzt“ Fehler direkt nach unserer einer der Veröffentlichungen.

Die Ursache war, unser apache Server wurde für den Einsatz gebracht. Alle unsere Dritte Verkehr geht durch apache und wir waren immer Verbindungsfehler zurückgesetzt, weil es sein nach unten.

Dies ist ein alter Thread, aber ich lief in java.net.SocketException: Connection reset gestern.

Die serverseitige Anwendung hatte seine Drosselungseinstellungen nur 1 Verbindung zu einem Zeitpunkt, zu ermöglichen, sich geändert! So manchmal Anrufe gingen durch und manchmal nicht. Ich löste das Problem, indem die Drosselung Einstellungen zu ändern.

Ich war immer genau diesen Fehler zu: Connection reset by peer. Die Ausnahme wurde von Spring REST-Vorlage angehoben auf die postForObject() Methode ausgeführt wird. Für mich war das Problem zu lange HTTP-URL-Anforderung. Also zunächst prüfen, ob das erzeugte URL ist, was sollte und, wenn Ihr Server wirklich sollte in der Lage sein, um Anfragen zu bearbeiten diese Länge, gehen Sie einfach auf Server-Konfiguration und den Standard zulässige Länge von URL-Anforderungen zu erhöhen.

Das ist das Problem für mich gelöst, aber beachten Sie:. Die Anwendung nicht auf einigen Internet-Browser laufen könnte, vor allem alte, da sie maximale Länge von URL-Anforderungen festgelegt haben

Hoffe, es hilft ...

ich diesen Fehler bekam, wenn die Textdatei ich eine Zeichenfolge enthalten ist, zu lesen versuche, die eine Anti-Virus-Signatur auf unserer Firewall angepasst.

FWIW, ich war immer diese Fehlermeldung, wenn ich aus Versehen wurde eine GET-Anforderung an einen Endpunkt zu machen, die eine POST-Anforderung erwartet hatte. Vermutlich war das nur, dass bestimmte Server Weg, um das Problem der Handhabung.

Ich war immer diesen Fehler, da die Port I zu verbinden versucht wurde geschlossen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top