Google App Engine ApiProxy делегирует исключение NullPointerException при сохранении файла

Я пытаюсь сохранить файл в Google App Engine и следую их документации, но постоянно получаю исключение NullPointerException в строке метода CreateOrReplace. Уже разобрался, что gcsService создается. Любые идеи?

public String getFileUrl(MultipartFile file) throws CustomException {

    String unique = UUID.randomUUID().toString();
    String fileName = unique + ".jpeg";

    GcsFilename gcsFilename = new GcsFilename("MY_BUCKET", fileName);

    try {
        GcsOutputChannel outputChannel = GcsServiceFactory.createGcsService().createOrReplace(gcsFilename, GcsFileOptions.getDefaultInstance());
        copy(file.getInputStream(), Channels.newOutputStream(outputChannel));
    } catch (IOException e) {
        e.printStackTrace();
    }

    ImagesService imagesService = ImagesServiceFactory.getImagesService();

    ServingUrlOptions options = ServingUrlOptions.Builder
            .withGoogleStorageFileName("/gs/MY_BUCKET/" + fileName)
            .secureUrl(true);

    return imagesService.getServingUrl(options);
}

Включенная зависимость:

<dependency>
        <groupId>com.google.appengine.tools</groupId>
        <artifactId>appengine-gcs-client</artifactId>
        <version>0.7</version>
    </dependency>

И получив:

RetryHelper(32.34 s, 6 attempts, com.google.appengine.tools.cloudstorage.GcsServiceImpl$1@74c3f0b0): Too many failures, giving up

За исключением в журнале:

c.g.a.tools.cloudstorage.RetryHelper     : RetryHelper(1.386 s, x attempts, com.google.appengine.tools.cloudstorage.GcsServiceImpl$1@6bd1dbe9): Attempt #x failed [java.io.IOException: java.lang.NullPointerException], sleeping for x ms

Заранее спасибо!

Редактировать:

Обнаружил, что класс ApiProxy в com.google.apphosting.api на

public static ApiProxy.Delegate getDelegate() {
    return delegate;
}

возвращает NULL.

Любые идеи?

Без минимальный воспроизводимый пример вам было бы невозможно помочь. В текущем состоянии единственный способ, которым мы можем помочь, - это дать вам подсказку / инструкцию по отладке вашей программы, что не относится к теме Переполнение стека.

user202729 10.04.2018 15:18

Спасибо, @ user202729. Надеюсь, теперь это более ясно.

Lazar Pantovic 10.04.2018 15:53

Если это Java, у вас должен быть тег Ява.

user202729 10.04.2018 15:55

Ага, это тоже добавил. Спасибо!

Lazar Pantovic 10.04.2018 15:57

Где у вас этот метод определен: copy(file.getInputStream(), Channels.newOutputStream(outputChannel));?

Victor M Herasme Perez 30.04.2018 14:03

В том же классе просто скопировал из документации, но ломается по методу CreateOrReplace. Любые идеи? @VictorHerasmePerez

Lazar Pantovic 01.05.2018 22:02

На самом деле мне нужен код метода. Можете ли вы опубликовать ссылку на документ, чтобы я мог получить полный пример?

Victor M Herasme Perez 01.05.2018 23:18

Да нет проблем @VictorHerasmePerez github.com/GoogleCloudPlatform/appengine-gcs-client/blob/master /…

Lazar Pantovic 03.05.2018 10:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
78
0

Другие вопросы по теме