README.md

Кэширование пользовательской сессии в hazelcast

Описание проблемы

Хочу воспользоваться Hazelcast для надёжного хранения пользовательской сессии в распределённом кластере. Для примера взял Hazelcast Embedded с одной нодой. Указал в настройках кэша провайдера Hazelcast: spring.cache.jcache.provider = com.hazelcast.cache.HazelcastMemberCachingProvider Как я понял в Jmix по умолчанию сохраняется 3 типа кэшей в Hazelcast:

  • jmix-eclipselink-query-cache
  • resource-roles-cache
  • row-level-roles-cache

Пользовательской сессии в них не нашёл, поэтому подключил предлагаемую Hazelcast конфигурацию для хранения пользовательских сессий:

  • В build.gradle добавил библиотеку ‘org.springframework.session:spring-session-hazelcast:3.5.5’ (последняя версия которой не работала, не могло найти класс ThemeSource на этапе запуска приложения)
  • Добавил конфигурацию SessionConfig.java
  • Добавил ендпоинт /public/hi, чтобы убедиться, что id сеанса совпадает с ид сеанса в экземпляре Hazelcast

При таком подходе, если перейти по ендпоинту /public/hi, в экземпляре хазелкаст появляется карта с данными текущего сеанса пользвателя.

НО, при попытке перехода на главную страницу возникает ошибка:

java.lang.NullPointerException Cannot invoke “com.vaadin.flow.function.DeploymentConfiguration.isProductionMode()” because “config” is null

Вопрос

Что я не так делаю и есть ли у Jmix выработанный подход к хранению пользовательских сеансов в Hazelcast?

Описание
Конвейеры
0 успешных
0 с ошибкой
Разработчики