为了账号安全,请及时绑定邮箱和手机立即绑定

是什么导致我的java.nett.ocketException:连接重置?

是什么导致我的java.nett.ocketException:连接重置?

三国纷争 2019-06-18 15:17:33
是什么导致我的java.nett.ocketException:连接重置?我们看到了频繁但断断续续的情况。java.net.SocketException: Connection reset我们日志中的错误。我们不确定Connection reset错误实际上来自,以及如何进行调试。这个问题似乎与我们试图发送的消息无关。注意,消息是不 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)我们的组件是一个运行在Tomcat下的Web应用程序,它调用第三方Web服务来发送SMS消息,这是偶然的。抛出异常的代码行是下面代码段中的最后一行。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 );
查看完整描述

3 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

SocketException的javadoc声明它是

引发,以指示基础协议中存在错误,例如tcp错误。

在您的示例中,连接似乎已被连接的服务器端关闭。这可能是您发送的请求的问题,也可能是其末尾的问题。

要帮助调试,可以考虑使用以下工具威雷沙克若要查看实际网络数据包,请执行以下操作。另外,除了您的Java代码之外,还有其他客户端可以用来测试Web服务吗?如果这是成功的,它可能表明在Java代码中的一个错误。

在使用CommonsHTTP客户端时,请查看通用HTTP客户端日志指南..这将告诉您如何在HTTP级别记录请求。


查看完整回答
反对 回复 2019-06-18
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

这个错误发生在你这边而不是另一边。如果另一方重置连接,则异常消息应说明:

java.net.SocketException reset by peer

原因是内部的连接HttpClient是陈腐的。检查已失效的SSL连接不会修复此错误。解决方案:转储您的客户并重新创建。


查看完整回答
反对 回复 2019-06-18
?
HUX布斯

TA贡献1876条经验 获得超6个赞

如果您尝试访问部署在Glassfish 3服务器上的Web服务,您可能需要调优http-线程池设置。当许多并发线程调用Web服务时,我们得到了固定的SocketExceptions。

  1. 转到管理控制台
  2. 导航到“配置”->“服务器配置”->“线程池”->“HTTP-线程-池”。
  3. 将“最大线程池大小”从5更改为32
  4. 将“Min线程池大小”从2更改为16
  5. 重启玻璃鱼。


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 840 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号