Лучший способ сохранить состояние с Tomcat / Scala? - PullRequest
2 голосов
/ 17 сентября 2009

Какой лучший способ сохранить пользовательское состояние с Tomcat / Scala? Моя первая мысль - постоянно хранить информацию об учетной записи в сеансе и перенаправлять пользователя на страницу входа в систему, если информация об этом сеансе для учетной записи отсутствует. Это жизнеспособная модель, или есть более разумный способ сохранения информации о пользователях? Я пытаюсь воспроизвести базовый сайт корзины покупок, и сейчас я просто обдумываю проблему.

1 Ответ

2 голосов
/ 17 сентября 2009

Есть много способов снять шкуру с этой кошки. Вы можете хранить свою информацию в сеансе при условии, что ваши объекты достаточно легки (а объем трафика достаточно низок). Это, вероятно, самое простое решение, но вы можете столкнуться с трудностями, когда вам нужно масштабировать или кластеризовать.

По опыту масштабирование, кластеризация, хранение сессий db и т. Д. У меня не очень хорошо работали.

Другой способ - управлять собственным токеном с помощью cookie. Затем вы сохраняете фактическую информацию для данного токена пользователя на сервере. Самая наивная реализация будет просто иметь карту в памяти, но это будет иметь недостаток потери всех данных при перезапуске приложения.

Вы можете сохранить информацию в базе данных и выполнять поиск по токену пользователя при каждом запросе (возможно, с использованием некоторой стратегии кэширования). Это также позволяет масштабировать до нескольких серверов приложений без особой заботы о кластеризации - каждый экземпляр просто ищет токен пользователя и выполняет запрос поиска в общей базе данных.

Если вы поместите фактическую реализацию в красивый интерфейс, вы можете начать с простого / дешевого сеансового решения и постепенно перейти к более сложной реализации, если потребуется позже. Одно из предостережений заключается в том, что вам придется проявить особую осторожность, чтобы не пропустить специфичную для сервлета информацию в интерфейс при первой реализации.

...