0

我有一个将文件上传到 S3 存储桶的 Spring Boot 应用程序。每当应用程序尝试上传文件时,我都会收到以下错误。堆栈跟踪是一个巨大的。所以我只提供其中的一部分。

java.lang.IllegalStateException: Socket not created by this factory
at org.apache.http.util.Asserts.check(Asserts.java:34) ~[httpcore-4.4.6.jar:4.4.6]
at org.apache.http.conn.ssl.SSLSocketFactory.isSecure(SSLSocketFactory.java:435) ~[httpclient-4.5.3.jar:4.5.3]
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:186) ~[httpclient-4.5.3.jar:4.5.3]

我正在使用以下依赖项

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.123</version>
    </dependency>

我什至尝试过

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-aws</artifactId>
    </dependency>
    <!--<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-aws-context</artifactId>
    </dependency>

但是仍然出现相同类型的错误

我尝试使用 AmazonS3 中的 TransferManager 和 putObject() 方法,但出现相同的错误。

该应用程序几天前运行良好,并且该错误最近才开始出现。

4

2 回答 2

2

我在 SDK 的 v1.10.12 上遇到了同样的问题,我切换到 v1.11.136 并解决了我的问题,将下面的代码添加到您的 pom 文件中

<!-- AWS S3 Dependencies-->
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.136</version>
    </dependency>
<!-- End of AWS S3 Dependencies -->
于 2017-05-30T22:01:24.250 回答
0

发布更多的堆栈跟踪会很有用,这样我们就可以看到在 SDK 生命周期的哪个时间点生成了异常(上面的堆栈跟踪只显示了 apache 类)。您还可以展示您是如何配置 S3 客户端的吗?

您是否正在配置自定义SocketFactory?有问题的检查是查看创建的是否实际上是如果不是 -Socket那就是它爆炸的地方 - 你可以从 Apache 代码中看到这一点SocketFactorySSLSocket

于 2017-04-27T15:07:45.893 回答