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

AWS插座不是由该工厂创建的

符允晨
2023-03-14

我试图将一些对象放入s3,它在aws套接字上抛出错误,而不是由这个工厂异常创建的。有人对此有任何线索吗?

它在这个功能上失败了

public void uploadToS3(Object obj) {
        try {
            ByteArrayInputStream input = new ByteArrayInputStream(obj.toString().getBytes());
            s3client.listBuckets();
            s3client.putObject(bucketName,fileName,input,new ObjectMetadata());
        }
        catch(AmazonServiceException e) {
            System.out.println(e.toString());
        }

    }

这是错误消息

套接字不是由该工厂在组织中创建的。阿帕奇。http。util。断言。在org上检查(Asserts.java:34)。阿帕奇。http。连接ssl。SSLSocketFactory。isSecure(SSLSocketFactory.java:435)位于org。阿帕奇。http。impl。conn.DefaultClientConnectionOperator。org上的openConnection(DefaultClientConnectionOperator.java:186)。阿帕奇。http。impl。conn.ManagedClientConnectionImpl。在org上打开(ManagedClientConnectionImpl.java:326)。阿帕奇。http。impl。客户DefaultRequestDirector。tryConnect(DefaultRequestDirector.java:610)位于org。阿帕奇。http。impl。客户DefaultRequestDirector。在org上执行(DefaultRequestDirector.java:445)。阿帕奇。http。impl。客户AbstractHttpClient。doExecute(AbstractHttpClient.java:835)位于org。阿帕奇。http。impl。客户可关闭的HTTPClient。在org上执行(CloseableHttpClient.java:83)。阿帕奇。http。impl。客户可关闭的HTTPClient。在com上执行(CloseableHttpClient.java:56)。amazonaws。http。AmazonHttpClient。executeOneRequest(AmazonHttpClient.java:749)位于com。amazonaws。http。AmazonHttpClient。executeHelper(AmazonHttpClient.java:505)位于com。amazonaws。http。AmazonHttpClient。在com上执行(AmazonHttpClient.java:317)。amazonaws。服务。s3.AmazonS3客户。在com上调用(AmazonS3Client.java:3595)。amazonaws。服务。s3.AmazonS3客户。在com上调用(AmazonS3Client.java:3548)。amazonaws。服务。s3.AmazonS3客户。com上的ListBucket(AmazonS3Client.java:697)。amazonaws。服务。s3.AmazonS3客户。com上的ListBucket(AmazonS3Client.java:703)。莫巴卡尔。服务数据模型服务。在com上上传到3(DataModelService.java:33)。莫巴卡尔。处理程序。未转换的IDataModelMessageHandler。handle(untransformedridatamodelmessagehandler.java:38)。反映NativeMethodAccessorImpl。sun上的invoke0(本机方法)。反映NativeMethodAccessorImpl。在sun调用(未知源)。反映DelegatingMethodAccessorImpl。调用(未知Sour

这是config类:

@Configuration
public class S3Config {

    @Value("${aws.accessKey}")
    private String accessKey;

    @Value("${aws.secretKey}")
    private String secretKey;

    @Value("${aws.region}")
    private String region;

    @Bean
    public BasicAWSCredentials basicAWSCredentials() {
        return new BasicAWSCredentials(accessKey, secretKey);
    }

    @Bean(name="amazonClient")
    public AmazonS3Client amazonS3Client(AWSCredentials awsCredentials) {
        AmazonS3Client amazonS3Client = new AmazonS3Client(awsCredentials);
        amazonS3Client.setRegion(Region.getRegion(Regions.fromName(region)));
        return amazonS3Client;
    }


}

以下是依赖项:

<dependencies>
        <dependency>
            <groupId>com.mobacar.searchmanager</groupId>
            <artifactId>valueObject</artifactId>
             <version>0.0.1-SNAPSHOT</version>
        </dependency>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
             <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- Starter Dependecy S3 -->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk</artifactId>
            <version>1.10.39</version>
        </dependency>
        <!--  -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
                <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-kafka</artifactId>
        </dependency>
    </dependencies>

共有3个答案

羊舌涵涤
2023-03-14

我在1.9.32版本的Java 8 aws-Java-sdk-s3中遇到了同样的问题

我刚刚将我的httpclient版本更新到4.5.1,这解决了我的问题

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.1</version>
    <type>jar</type>
</dependency>
蔚承天
2023-03-14

当我将我们的项目迁移到Java 11 Spring Boot 2.1.8时,我也遇到了同样的问题。修复方法是什么?将aws java sdk升级到以下版本以修复此问题。

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.836</version>
    </dependency>
郎喜
2023-03-14

我终于明白了。Amazon java sdk需要一个不同版本的htppclient,它不是来自Spring托管的httpclient。所以只需要添加这个依赖项。

        <dependency>
         <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
         <version>4.5</version>
    </dependency>
 类似资料:
  • 问题内容: 我注释了一堆POJO,以便JPA可以使用它们在Hibernate中创建表。似乎所有表都被创建,除了一个非常中央的表,称为“修订”。Revision类具有注释,因此它将被重命名为RevisionT,因此与MySQL(目标数据库)中的任何保留字都没有冲突。 我删除整个数据库,重新创建它,然后基本上打开和关闭JPA会话。似乎可以毫无问题地重新创建所有表。 为什么在创建的架构中缺少单个表?可以

  • 假设有一个类A,它的构造函数是这样的: 还有AFactory: 所以要创建一个A的实例,我显然需要做这样的事情: 但是,假设我有其他类:例如,B类、C类和D类具有类型为A的成员(带有字段注入,但也可以是ctor): 我希望将 A 的相同实例注入到这些类中。但仍然可以选择将 A 的另一个实例注入其他类(假设 E 类和 F 类)。 正确的做法是什么?我就是想不出一个干净的方法来做到这一点。

  • 我是Angular的新手,目前正在研究路由。我在组件中使用子路由时遇到了问题。routerLink在组件中没有呈现为链接。如果我使用路由器出口,应用程序会崩溃。 使用路由器出口时,我得到了以下错误信息: 我用谷歌搜索了错误消息,解决方案始终是模块中缺少路由器模块的导入。我已经导入了路由器模块。 这是我的模块。ts 这是我的应用程序。 怎么了,漏了什么? 如果您愿意,您也可以在github上查看我的

  • 我正在开发一个单例BluetoothHelper类。在connectToBTDevice()方法中,调用了一个新线程,在该线程中,蓝牙套接字试图连接到蓝牙设备。不幸的是,它开始时很好,但退出时有一个警告系统。错误如下: BluetoothHelper.java onnectToBTDevice(BluetoothDevice device)方法位于第234行。BluetoothSocket con

  • 我试图了解Socketchannes和NIO的总体情况。我知道如何使用常规套接字,以及如何为每个客户机服务器创建一个简单的线程(使用常规阻塞套接字)。 所以我的问题是: 什么是袜子通道 当我使用SocketChannel而不是Socket时,额外得到了什么 通道和缓冲区之间的关系是什么 什么是选择器 文档中的第一句话是

  • 我有以下代码: 我将添加更多类似的类。与其单独拼出所有这些类,我想学习如何创建一个可以从简单的数据结构创建这些类的工厂。 我该怎么做?我阅读了Metaobject协议文档,但根据文档页面顶部和中间的示例,我不知道如何动态地为我的类指定不同的名称。 我试过: 但最后一行只是抛出了一个错误: