当我在Helidon MP Main Program的代码下运行时,此功能对于所有同时上传均正常,但 当我从Test运行代码时,我需要等待一些时间,例如threadSleep(time),然后服务器停止所有文件的上传,否则,它只会上传一些文件。你能帮忙
ObjectStorageAsync client = new ObjectStorageAsyncClient(provider).getClient();
client.putObject(putObjectRequest, putObjectHandler);
PutObjectResponse response = putObjectHandler.waitForCompletion();
答案 0 :(得分:1)
这个问题似乎只涉及Oracle对象存储API,而与Helidon无关。
我还注意到,putObject
's的第二个参数是AsyncHandler
,似乎没有上面引用的waitForCompletion()
方法。
最后,我注意到putObject
方法返回了一个Future
,您没有使用它(正确的是,从文档中看,如果您提供了AsyncHandler
)。在您的情况下,可能更有意义的是将null
作为putObject
的第二个参数,然后在返回的Future
上调用get()
,这将阻塞直到计算完成了吗? (当然,这会使您正在做的事情的异步特性变得无关紧要,但似乎就像您想做的那样。)
最后,如果您必须阻塞直到一切完成,那么也许您根本就不想使用异步API,并且会对synchronous API instead更加感兴趣。