当前位置: 首页 > 知识库问答 >
问题:

上传分段失败,无法执行 HTTP 请求:连接重置

龚永新
2023-03-14

我正在尝试使用多部分上载AWS S3 java API执行文件上载(我使用的是SDK 1.8.1)。我能够成功执行上传。

但是,间歇性地,我不断得到这个例外。

七月 31, 2014 4:39:38 AM com.amazonaws.http.AmazonHttpclient execute 帮助信息: 无法执行 HTTP 请求: 连接重置 java.net.socketInputStream.read(SocketInputStream.java:189) 在 java.net.SocketInputStream.read(SocketInputStream.java:121) 在 sun.security.ssl.inputRecord.read 充分(输入记录.java:312) 在 sun.security.ssl.InputRecord.read(输入记录.java:350) 在 sun.security.ssl.sslsocketimport.read 记录(SSLSocketImpl.java:927) at sun.security.sslsocketImpl.readDataRecord(SSLSocketImpl.java:884) at sun.security.ssl.appInputStream.read(AppInputStream.java:102) at org.apache.http.impl.io.AbstractSessionInssionInputBuffer.fillBuffer(AbstractSessionInputbuffer.java:166) at org.iml.io.socketinputbu.java ffer.inlg.13:90) at org.apache.http.impl.io.摘要输入输入缓冲区.java:281) atorg.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:92) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62) at org.apache.http.impl.io.AbstractMessageParser.parse.parse(AbstractMessageParser.java:254) at org.apache.http.impl.AbstractHtClientConnection.receiveResponseHeader(AbstractHtclientConnection.java:289) atorg.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252) at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191) at org.apache.http.protocol.httpRequestExecutor.doReceiveResponse(HttpRequestExe.java cutor.java:66) at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doReceiveResponse(SdkHttpRequestExecutor.java:66) atorg.apache.http.protocol.httpRequestExecutor.execute(默认请求executor.java:127) at org.apache.http.impl.client.defaultRequetDirector.httpRequet.httprequetDirector.java:717) at org.apache.http.impl.client.defaultRequestDirector.execute(DefaultRequestDirector.java:522) at org.apache.java.http.impl.client.chinesetclient.execute(AbstractHttpclient.java:805) at org.apache.http.impl.client.abstractHttpClient.execute(AbstractHttpclient.java:805)在 amazonaws.amazons.services.java.amazonS3Client..java:245) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3711) at com.amazonaws.services.s3.amazonS3Client.invoke(AmazonS3Client.java:3711) at com.amazonaws.services.s3.AmazonS3Client.uploadPart(AmazonS3Client.java:2809) at cloud.

在下面的代码中

try {
                  _partETags.add(_s3.uploadPart(uploadPartReq).getPartETag());
      } catch (AmazonClientException e) {
                  System.out.println("Amazon service error. Retrying...");
                  printException(e);
      } catch (Exception e) {
                  printException(e);
                  throw new UserException("Received an exception while performing upload part");
      }

如果我看一下docuementation,上面说uploadPart函数只会抛出AmazonClientException和AmazonServiceException两个类。

链接:http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#uploadPart(com.amazonaws.services.s3.model.UploadPartRequest)

<documentation>
...
UploadPartResult uploadPart(UploadPartRequest request)
throws AmazonClientException,
AmazonServiceException
...
Throws:
AmazonClientException - If any errors are encountered in the client while making the request or handling the response.
AmazonServiceException - If any errors occurred in Amazon S3 while processing the request. 
...
</documentation>

但是,我收到了不同的例外。

我有以下问题

  • 这是预期行为吗?如果不是,我该如何解决这个问题
  • 为什么我的try-catch块无法捕获此异常
  • 如果是AmazonClient或AmazonServiceException,建议我们重新尝试上载,还是应将其视为不可恢复的错误

共有2个答案

商琛
2023-03-14

当我尝试通过 eclipse 上传我的项目 AWS lambda 时,我按照教程链接中的步骤操作:

https://examples.javacodegeeks.com/software-development/amazon-aws/tutorial-use-aws-lambda-s3-real-time-data-processing/

但是在进行“将Lambda代码部署到AWS”这一步时===

我遇到的错误:1)我得到一个错误窗口,显示消息“无法将项目上传到Lambda无法执行HTTP请求:连接被对等方重置:套接字写入错误”

2)我的堆栈Tarce的第一行异常是:“com.amazonaws.Sdk客户端异常:无法执行HTTP请求:连接由对等方重置:套接字写入错误引起的:java.net.Socket异常:对等方的连接重置:套接字写入错误”

3) Eclipse错误日志给出消息:“java.lang.NullPointerException at org.Eclipse.core.databinding.ValueBinding.doUpdate(ValueBinding.java:158)”

然后,我通过在eclipse网络连接中做一个小的更改来更改设置,因为我的代理设置被阻止将我的项目上载到lambda,所以我提出了如下解决方案:

解决方案:窗口-

然后尝试使用相同的步骤在lambda上上传项目,它对我很有效。希望这对你也有帮助。

锺离昂然
2023-03-14

这是来自AmazonS3Client的日志消息(在信息级别),告诉您有一个暂时的网络错误。默认情况下,AmazonS3Client会捕捉这类异常,并为您重试上传。您可以通过ClientConfiguration调整这种行为。根据文档,如果在配置的重试次数后上传仍未成功,将引发< code > AmazonClientException 。

 类似资料:
  • 主要内容:Maven依赖关系,HttpClient分段上传请求示例在本教程中,我们将演示如何使用Apache HttpClient 4.5进行分段上传http请求。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache HttpClient 4.5版本。 将以下依赖项添加到您的项目中。 pom.xml 文件的内容如下 - HttpClient分段上传请求示例 在这个例子中,我们将演示如何使用HttpClient 4.5来分段上传文件。 我们使

  • 这是我的第一个问题。我对API上的http请求有问题。当我发出请求时,控制台上会显示以下错误: 异常:找不到不同类型'对象'的支持对象'[对象对象]'。NgFor仅支持绑定到Iterable,如Array。 每个文件的内容如下: 靴子ts 应用程序。组成部分ts peli.service.ts peli.ts 以及我从请求中收到的JSON文件(输入-蜘蛛侠): 我不知道问题出在哪里,一切似乎都很好

  • 我们正在运行SonarQube 4.5.1,并使用Jenkins和SonarQube插件运行项目分析。从三天前开始,我们在一些作业中遇到以下错误消息。 如果我将URL复制到浏览器,我会收到以下消息: “您仅被授权执行本地(试运行)SonarQube分析,而无需将结果推送到SonarQube服务器。请与您的SonarQube管理员联系。” 背景 "期望selectOne()返回一个结果(或null)

  • 问题内容: 在我的JMeter测试中,如果有任何错误,我想触发HTTP请求以在系统上发布消息,以进一步关注。我在这里可以做什么?邮件可视化工具可以很好地通过电子邮件报告错误。我想做同样的事情,但是要通过HTTP请求。我正在使用jmeter 3.2。 问题答案: 您可以执行以下操作: 在HTTP Request采样器之后添加If Controller,并将以下代码放入“条件”区域: 将SMTP Sa

  • Apollo link提供了一个错误处理程序 问题:目前,我们希望在apollo调用期间过期时刷新oauth令牌,并且我们无法在中正确执行异步获取请求。 代码: <代码>初始化阿波罗客户端。js 发生的情况是: 初始图形QL查询运行并因未经授权而失败 执行的函数。 刷新令牌的promise已执行。 再次执行的函数?? 刷新令牌的promise完成。 返回初始的graph QL查询结果,其数据为 在