首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >software.amazon.awssdk.core.exception.SdkClientException

software.amazon.awssdk.core.exception.SdkClientException
EN

Stack Overflow用户
提问于 2022-07-26 19:57:39
回答 2查看 2.3K关注 0票数 1

当我试图调用DynamoDB AWS服务时,下面会出现以下错误:

代码语言:javascript
复制
Multiple HTTP implementations were found on the classpath. To avoid non-deterministic loading implementations, please explicitly provide an HTTP client via the client builders, set the software.amazon.awssdk.http.service.impl system property with the FQCN of the HTTP service to use as the default, or remove all but one HTTP implementation from the classpath

我用的是DynamoDbClient

我的pom.xml:

代码语言:javascript
复制
       <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>dynamodb</artifactId>
        </dependency>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>url-connection-client</artifactId>
        </dependency>

客户端配置:

代码语言:javascript
复制
@Singleton
public class DynamoClientConfig {

    @Produces
    @ApplicationScoped
    public DynamoDbClient getClientDb() {
        return DynamoDbClient.builder().region(Region.SA_EAST_1).build();
    }

我用的是Java和Quarkus。

有没有人知道它可能是什么,以及如何修复它?

EN

回答 2

Stack Overflow用户

发布于 2022-07-27 14:04:18

搞清楚了!我在dynamodbclient中添加了参数,它起了作用。

代码语言:javascript
复制
.httpClient(UrlConnectionHttpClient.builder().build())
票数 1
EN

Stack Overflow用户

发布于 2022-09-13 13:47:11

此问题是由以下行为(来源)引起的:

如果在ServiceLoader上未指定HTTP,则SDK将使用ServiceLoader在类路径上查找HTTP实现。

虽然您的方法有效,但是您应该大部分时间使用httpClient而不是httpClientBuilder,这样SDK就可以为您管理httpClient生命周期。有关参考,请参阅DynamoDbClientBuilder javadoc 这里这里。不同之处:

httpClient

此客户端在准备释放时必须由用户关闭。当服务客户端关闭时,SDK不会关闭HTTP客户端。

鉴于在httpClientBuilder情况下

生成器创建的客户端由SDK管理,在服务客户端关闭时将关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73129078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档