java - 无法通过我的 Google App Engine Servlet (Java) 将对象存储在我的 Google Cloud Storage 中

标签 java google-app-engine google-cloud-storage

我正在使用 App Engine 来允许应用上传文件。 该文件是通过 HTTP POST 接收的,我正在尝试将其存储在 Google 存储中。

我的服务器代码;

GcsFileOptions instance = GcsFileOptions.getDefaultInstance();
GcsFilename fileName = new GcsFilename("my-bucket", "file.dat");
GcsOutputChannel outputChannel;

log.info("Saving " + fileName + " to " + instance);

outputChannel = gcsService.createOrReplace(fileName, instance);
copy(req.getInputStream(), Channels.newOutputStream(outputChannel));

中间的日志条目产生;

com.my.app.Servlet: Saving GcsFilename(my-bucket, file.dat) to GcsFileOptions [userMetadata={}]

这会导致异常;

com.google.appengine.tools.cloudstorage.RetriesExhaustedException: RetryHelper(5.644 s, 10 attempts, com.google.appengine.tools.cloudstorage.GcsServiceImpl$1@1af95fcc): Too many failures, giving up
    at com.google.appengine.tools.cloudstorage.RetryHelper.doRetry(RetryHelper.java:127)
    at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:166)
    at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156)
    at com.google.appengine.tools.cloudstorage.GcsServiceImpl.createOrReplace(GcsServiceImpl.java:70)
    at com.my.app.Servlet.saveFile(Servlet.java:128)
    at com.my.app.Servlet.doPost(Servlet.java:107)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
... <Cut by submitter>
Caused by: java.io.IOException: java.lang.NullPointerException
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService$BlobStorageAdapter.getInstance(LocalRawGcsService.java:186)
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService$BlobStorageAdapter.access$000(LocalRawGcsService.java:109)
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService.ensureInitialized(LocalRawGcsService.java:194)
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService.beginObjectCreation(LocalRawGcsService.java:249)
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService.beginObjectCreation(LocalRawGcsService.java:92)
    at com.google.appengine.tools.cloudstorage.GcsServiceImpl$1.call(GcsServiceImpl.java:74)
    at com.google.appengine.tools.cloudstorage.GcsServiceImpl$1.call(GcsServiceImpl.java:70)
    at com.google.appengine.tools.cloudstorage.RetryHelper.doRetry(RetryHelper.java:108)
    ... 34 more
Caused by: java.lang.NullPointerException
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService$BlobStorageAdapter.<init>(LocalRawGcsService.java:123)
    at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService$BlobStorageAdapter.getInstance(LocalRawGcsService.java:184) 
    ... 41 more 

最佳答案

已解决。这个问题(在类似的情况下)已经在这里得到回答:How to fetch the file list from gcs?

关于java - 无法通过我的 Google App Engine Servlet (Java) 将对象存储在我的 Google Cloud Storage 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629951/

相关文章:

java - 产生线程时,如何限制可能的最大数量?

Java线程同步块(synchronized block)行为-synchronized与synchronized()?

java - 根据用户输入创建多个元组

java - NoClassDefFoundError - GAE/J 上的限制类

java - GWT 是否与应用程序引擎的 Multi-Tenancy 支持兼容

java - 线程有自己的数据副本吗?

java - 在 GAE 应用程序中启用 HA/High Replication 选项

php - 无法使用谷歌 API 将对象上传到谷歌云存储

google-cloud-storage - 将 Google 域连接到 Google Cloud Bucket

object - "Live object"中的 "Object Lifecycle Management"是什么?