Ask a Question
Ask Question Login
Corporate Training
  1. Community
  2. Java
  3. Question
Java

How does java net SocketException Connection reset happen

Asked by Kevin Taylor Jul 26, 2021 3.6K views 3 answers
Share

About this question

We are seeing frequent java.net.SocketException: Connection reset errors in our logs for a component that calls a third party Web service that sends SMS messages.

Our application is written in Java and runs on top of Tomcat 5.5. It was written by contractors who are no longer with us. The current team has no real Java expertise, and we are unsure as to where the Connection reset error is actually coming from, and how to go about debugging.

The issue appears to be completely intermittent, and unrelated to the messages we are attempting to send.

Any suggestions on what the typical causes of this exception might be, and how we might proceed, are welcome.

The whole call stack is included below for completeness.

(com.companyname.mtix.sms is our component)

   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

Your answer

3 Answers

Pedroahmed Latest answer

Answered on May 24, 2025

Don’t make the mistake of choosing a mover before you Get a quote from SQ Moving. You’ll be amazed at how much you get for the price—no hidden fees and top service.

Was this helpful?

Ranjana Admin JanBask Expert

Answered on Jul 5, 2024

The java.net.SocketException: Connection reset is a common error in Java networking, indicating that the connection was unexpectedly closed by the remote peer. Here are the typical causes and scenarios where this exception can occur:

Server-Side Issues:

Server Crash: If the server crashes or is restarted, any ongoing connections will be reset.

Server Overload: High load on the server can cause it to drop connections abruptly.

Timeouts: If the server does not respond within a certain time, the connection may be reset.

Network Issues: Problems in the network path, such as intermediate firewalls or proxies resetting the connection.

Client-Side Issues:

Incorrect Configuration: Incorrect settings in the client configuration can lead to connection resets.

Large Data Transfers: Sending very large amounts of data without proper handling can cause timeouts and resets.

Improper Handling of Streams: Not properly closing input/output streams or sockets can lead to exceptions.

Network and Protocol Issues:

TCP Keepalive: TCP keepalive settings can lead to connection resets if the connection appears idle.

Network Glitches: Temporary network issues, such as packet loss or high latency, can cause resets.

Firewalls/Proxies: Intermediate devices like firewalls or proxies can drop connections if they detect unusual activity or policy violations.

How to Handle Connection reset Exception

Retry Mechanism: Implementing a retry mechanism to attempt reconnection can help in transient issues.

Timeouts and Keepalives: Adjusting timeouts and keepalive settings can help maintain connections.

Resource Management: Properly closing sockets and streams to ensure no resource leaks.

Logging and Monitoring: Adding logging and monitoring to detect patterns and diagnose the root cause.

Network Configuration: Ensuring that network configurations are optimized and stable.

Example Code Snippet for Handling Connection Reset

Here's a basic example in Java of how you might handle a SocketException:

import java.io.*;
import java.net.*;
public class SocketClient {
    public static void main(String[] args) {
        String hostname = "example.com";
        int port = 80;
        while (true) {
            try (Socket socket = new Socket(hostname, port);
                 PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
                // Send request to the server
                out.println("GET / HTTP/1.1");
                out.println("Host: " + hostname);
                out.println("Connection: Close");
                out.println();
                // Read the response from the server
                String responseLine;
                while ((responseLine = in.readLine()) != null) {
                    System.out.println(responseLine);
                }
                break; // Exit the loop if successful
            } catch (SocketException e) {
                if (e.getMessage().equals("Connection reset")) {
                    System.out.println("Connection reset, retrying...");
                    // Optionally, add a delay before retrying
                } else {
                    e.printStackTrace();
                    break; // Exit on other SocketExceptions
                }
            } catch (IOException e) {
                e.printStackTrace();
                break; // Exit on other IOExceptions
            }
        }
    }
}

In this example, the client attempts to connect to a server and handle the Connection reset error by retrying the connection.

Was this helpful?

More Java discussions

Learn & Explore

Free tutorials and interview questions from industry experts — learn the skill, then get ready to prove it.

Latest Java Blogs

Guides, tips and career advice on Java from JanBask experts.