gpt4 book ai didi

java - 无法访问 http ://localhost:{port} using dynamodblocal programmatically

转载 作者:行者123 更新时间:2023-12-01 09:20:40 25 4
gpt4 key购买 nike

我正在使用 com.amazonaws 的 dynamodblocal(来自 maven 的 v 1.10.5.1)在本地创建 inMemory dynamoDB。

启动本地服务器的Java代码是:

server = ServerRunner.createServerFromCommandLineArgs({ "port", getAvailablePort(), "-inMemory", "-sharedDb" });
server.start();
AmazonDynamoDBClient amazonDynamoDBClient = new AmazonDynamoDBClient(basicAWSCredentials);

这是确认我已成功启动本地 dynamodb 的日志:

Initializing DynamoDB Local with the following configuration:
Port: 60677
InMemory: true
DbPath: null
SharedDb: true
shouldDelayTransientStatuses: false
CorsParams: *

此处使用端口 60677,我可以从网络浏览器手动打开 http://localhost:60677/shell。但当我尝试以编程方式达到它时,它不起作用。我不断收到 HTTP/1.1 500 服务器错误

这会给我 500 错误(端口将是 getAvailablePort() 的输出):

amazonDynamoDBClient.setEndpoint("http://localhost:" + port);
amazonDynamoDBClient.listTables();

此外,当我从命令行启动一个时:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -port 9999 -inMemory -sharedDb

并尝试以编程方式连接到它,它工作正常。它允许我以编程方式执行所有 CRUD 操作。

我做错了什么?

最佳答案

当本地 DynamoDB 服务器启动并运行时,您可以使用以下代码获取表列表。

只需在下面的代码中相应地更改端口号即可。不需要 basicAWSCredentials。

DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient().withEndpoint("http://localhost:8000"));

TableCollection<ListTablesResult> tables = dynamoDB.listTables();
Iterator<Table> iterator = tables.iterator();

while (iterator.hasNext()) {
Table table = iterator.next();
System.out.println(table.getTableName());
}

关于java - 无法访问 http ://localhost:{port} using dynamodblocal programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com