我正在尝试使用Amazon S3 JAVA sdk获取文件大小(内容长度)。

public Long getObjectSize(AmazonS3Client amazonS3Client, String bucket, String key)
        throws IOException {
    Long size = null;
    S3Object object = null;
    try {
        object = amazonS3Client.getObject(bucket, key);
        size = object.getObjectMetadata().getContentLength();

    } finally {
        if (object != null) {
            //object.close();
            1. This results in 50 calls (connection pool size) post that I start getting connection pool errors.
            2. If this line is uncommented it takes hell lot of time to make calls.
        }
    }
    return size;
}

我关注了thisthis。但不确定在这里我在做什么错。
有什么帮助吗?

最佳答案

我正在猜测您的实际问题是什么,但是我认为您可以通过执行以下操作来减少代码并完全不需要创建s3Object:

public Long getObjectSize(AmazonS3Client amazonS3Client, String bucket, String key)
        throws IOException {
    return amazonS3Client.getObjectMetadata(bucket, key).getContentLength();
}

那应该消除了调用object.close()的需要,而您似乎对此有问题。

10-04 18:03