Кэширование пользовательской сессии в 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?