Есть много способов снять шкуру с этой кошки. Вы можете хранить свою информацию в сеансе при условии, что ваши объекты достаточно легки (а объем трафика достаточно низок). Это, вероятно, самое простое решение, но вы можете столкнуться с трудностями, когда вам нужно масштабировать или кластеризовать.
По опыту масштабирование, кластеризация, хранение сессий db и т. Д. У меня не очень хорошо работали.
Другой способ - управлять собственным токеном с помощью cookie. Затем вы сохраняете фактическую информацию для данного токена пользователя на сервере. Самая наивная реализация будет просто иметь карту в памяти, но это будет иметь недостаток потери всех данных при перезапуске приложения.
Вы можете сохранить информацию в базе данных и выполнять поиск по токену пользователя при каждом запросе (возможно, с использованием некоторой стратегии кэширования). Это также позволяет масштабировать до нескольких серверов приложений без особой заботы о кластеризации - каждый экземпляр просто ищет токен пользователя и выполняет запрос поиска в общей базе данных.
Если вы поместите фактическую реализацию в красивый интерфейс, вы можете начать с простого / дешевого сеансового решения и постепенно перейти к более сложной реализации, если потребуется позже. Одно из предостережений заключается в том, что вам придется проявить особую осторожность, чтобы не пропустить специфичную для сервлета информацию в интерфейс при первой реализации.