Не удается сохранить объекты в моем облачном хранилище Google из моего сервлета Google App Engine (Java)
Я использую свой App Engine, чтобы приложение могло загрузить файл. Файл получен в HTTP POST, и я пытаюсь сохранить его в Google Storage.
Код моего сервера;
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
1 ответ
Решаемые. На этот вопрос (в аналогичной ситуации) уже был дан ответ здесь: Как получить список файлов из gcs?