В первой части хочу рассказать о том, как у меня не получалось запустить наш сервис в Service Grid. Во второй - о том, как всё получилось.
Первая попытка запуска закончилась следующим исключением:
Как видно, причина исключения в том, что объект Gson не является сериализуемым. Речь идёт вот об этом поле объекта StartService (строка 27):
Документация Apache Ignite говорит о том, что в этом случае поле должно быть помечено ключевым словом transient.
Ок. Помечаем поле ключевым словом transient и при следующем запуске получаем новое исключение:
Всеми любимый NullPointerException. Выбрасывается в объекте FileParser при попытке сохранить десериализованный объект в кеш:
Обкладываемся логгерами и видим, что в 36 строке у нас не происходит десериализации объекта Review из прочитанной из файла строки.А функция десериализации объекта у нас - это:
Опять Gson! ))
Ситуация исправилась заменой поля Gson gson на локальную переменную метода StartService#execute():
Итог получился таким:Задача стартовала, файл был загружен и распарсен.
Во второй части статьи я расскажу о том, какие настройки были сделаны мной в файле ignite-config.xml для того, чтобы наш сервис был инициализирован и запустил свою задачу при запуске кластера Apache Ignite.