是什么导致我的 java.net.SocketException: 连接重置? [复制]

2023-11-26

我们经常看到但间歇性的java.net.SocketException: Connection reset我们的日志中出现错误。我们不确定在哪里Connection reset错误实际上是从哪里来的,以及如何去调试。

该问题似乎与我们尝试发送的消息无关。 请注意,该消息是not connection reset by peer.

关于此异常的典型原因可能是什么以及我们如何进行有什么建议吗?

这是一个代表性的堆栈跟踪(com.companyname.mtix.sms是我们的组件):




    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)
      

我们的组件是一个 Web 应用程序,在 Tomcat 下运行,它调用发送 SMS 消息的第三方 Web 服务,事情就是这样。抛出异常的代码行是下面代码片段中的最后一行。

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 );

SocketException 的 javadoc 声明它是

抛出表示底层协议出现错误,例如TCP错误

在您的情况下,连接的服务器端似乎已关闭连接。这可能是您发送的请求存在问题,也可能是请求最终出现问题。

为了帮助调试,您可以考虑使用诸如Wireshark查看实际的网络数据包。另外,是否有 Java 代码的替代客户端可用于测试 Web 服务?如果成功,则可能表明 Java 代码中存在错误。

当您使用 Commons HTTP Client 时,请查看常见HTTP客户端日志记录指南。这将告诉您如何在 HTTP 级别记录请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是什么导致我的 java.net.SocketException: 连接重置? [复制] 的相关文章

随机推荐

  • Android - 在LinearLayout和RelativeLayout中对视图顶部边距/底部边距/等进行动画处理

    我正在尝试创建一个从底部向上滑动的菜单 首先 菜单视图仅在屏幕底部可见 然后单击它会使其向上滑动 我尝试使用TranslateAnimation 但是虽然像素发生了移动 但菜单的点击区域仍处于与之前相同的位置 所以我认为如果我可以在动画完成
  • 保留数据迭代器的向量

    我有一个功能 void get good items const std vector
  • Spring SecurityContext 在错误页面上返回 null 身份验证

    我正在尝试为 403 访问被拒绝 和 500 内部服务器错误 等错误编写自定义错误页面 它们将从 Velocity 模板呈现 并使用用户的区域设置翻译所有消息 身份验证和区域设置解析在应用程序中运行良好 我在 web xml 中将位置设置为
  • Python 链式属性访问中的无传播[重复]

    这个问题在这里已经有答案了 有没有空传播算子 空感知成员访问 运算符 在Python中 所以我可以写类似的东西 var object children grandchildren property 如 C VB NET 和 TypeScri
  • 为什么 ClassInitialize 修饰方法会使我的所有测试失败?

    我从MSDN了解到 ClassInitialize是标记一个方法 该方法将在所有测试运行之前为所有测试执行一次设置代码 当我在下面的简化装置中包含这样的方法时 所有测试都会失败 我一注释掉 他们又通过了 TestClass public c
  • 获取 SortedList 中 2 个键之间的所有键的最快方法是什么?

    给定一个人口稠密的SortedList
  • 如何在Java中确定给定日期的前一天日期?

    我假设 Java 有一些内置的方法可以做到这一点 给定一个日期 如何确定该日期之前一天的日期 例如 假设给我的是 3 1 2009 上一个日期是 2009 年 2 月 28 日 如果给我的是 3 1 2008 那么之前的日期就是 2 29
  • 在 Swift 的条件语句中将可选值分配给新变量的原因

    我正在浏览 swift 文档 在可选部分中 它讨论了使用问号 表示可能为零的变量 这可以在 if 语句中使用来检查 nil 但在文档中 他们将可选值分配给条件中的新变量 是否有一个原因 例如 它出现在the docs与此类似 Declare
  • 使用循环对数据框进行子集化

    我有一个如下所示的数据框 index ID date Amount 2 1001 2010 06 08 0 21 1001 2010 10 08 10 6 1002 2010 08 16 30 5 1002 2010 11 25 20 9
  • pg.rb 分段错误 [Mojave 升级]

    pg rb 中的分段错误 56 版本 导轨 5 2 0 红宝石 2 4 4 PG宝石 0 20 0 升级到 Mac OS mojave 后 我的本地主机服务器遇到了问题 服务器本身启动正常 但是当尝试通过网络浏览器访问它时 它崩溃了 并且出
  • 行动代表。如何获取调用该方法的实例

    我有一个操作 我想知道如何访问调用该方法的实例 Exemple this FindInstance gt this InstanceOfAClass Method this FindInstance gt this InstanceOfAC
  • RS232串口通信 C# win7 .net Framework 3.5 sp1

    你好 我是 C 串口新手 我写了一个c 程序 运行在winXP和win7上 以在机器发送数据时保留从串口接收到的数据 using System IO using System IO Ports using System Threading
  • 嵌入式Python 2.7.2 从用户定义的目录导入模块

    我将 Python 嵌入到具有定义的 API 的 C C 应用程序中 应用程序需要实例化脚本中定义的类 其结构大致如下 class userscript1 def init self do something here def method
  • 将元组列表转换为字典

    我有一个像这样的元组列表 a 1 a 2 a 3 b 1 b 2 c 1 我想通过第一项迭代此键控 因此 例如 我可以打印如下内容 a 1 2 3 b 1 2 c 1 如果不保留一个项目来跟踪第一个项目是否与我围绕元组循环相同 我该如何去做
  • Gmail 未显示正确的字体

    我正在尝试更改电子邮件的字体以打开 sans 但是 我在 Gmail 呈现正确字体时遇到问题 我设法找到解决 Outlook 问题的方法 这就是我所拥有的 body font face font family Open Sans font
  • vim 中的 Zsh 别名如 !gst?

    有没有办法在 vim 中运行我的 zsh 别名 并将输出发送到新的分割 我正在使用 oh my zsh git 别名 例如gst 而我无法做到 gst在 vim 里面 Thanks Try 设置 shell zsh l 并将别名设置为 zs
  • 将 RTSP 存储到文件位置

    我能够通过 C Winform 应用程序在 Windows 7 64 位机器上流式传输 rtsp 这是我使用的库 VLCD点网这是播放 RTSP 流的代码示例 LocationMedia media new LocationMedia rt
  • ActiveMQ 消费者挂起

    我有一个使用 SSL 传输的 activeMQ 代理 我有大约 10 个消费者正在使用该代理 我正在使用骆驼来配置我的路线 每隔一段时间 它就会挂起并且不会消耗新消息 即使我重新启动消费者 即使队列中有待处理的消息 我开始尝试通过一次一个地
  • Visual Studio 2015。文件未添加到 TFS

    我正在使用 Visual Studio 2015 update 3 以及托管在 Visualstudio com 上的 TFS 当我将 C 类文件添加到 Visual Studio 中的一个项目时 它不会自动添加到源代码管理中 对于同一解决
  • 是什么导致我的 java.net.SocketException: 连接重置? [复制]

    这个问题在这里已经有答案了 我们经常看到但间歇性的java net SocketException Connection reset我们的日志中出现错误 我们不确定在哪里Connection reset错误实际上是从哪里来的 以及如何去调试