У меня есть сервлет Java, который извлекает данные из базы данных MySQL. Чтобы минимизировать обращения к базе данных, она извлекается только один раз в методе init () и помещается в HashMap <> (т.е. кэшируется в памяти).
На данный момент этот HashMap является членом класса сервлетов. Мне нужно не только сохранить эти данные, но также обновить некоторые значения (фактически счетчики) в кэшированных объектах базового класса значений hashmap. И есть таймер (или задача Cron), чтобы запланировать сброс этих счетчиков в БД.
Итак, после поиска в Google я нашел 3 варианта хранения кэшированных данных:
1) как сейчас, член класса сервлетов (но сервлеты могут быть выведены из строя и возвращены в эксплуатацию контейнером по желанию. Тогда данные будут потеряны)
2) в ServletContext (я прав, что здесь рекомендуется хранить небольшие объемы данных?)
3) в ресурсе JNDI .
Какой самый предпочтительный способ?