2010-09-14 5 views
2

Hallo all. Я нашел этот интересный поток о том, как аннулировать сеанс пользователя, когда он дважды записывается в журнал.Java Как аннулировать сеанс пользователя, когда он дважды регистрируется с теми же учетными данными

How to invalidate an user session when he logs twice with the same credentials

У меня есть несколько иной среде, но я должен решить ту же проблему. Различия в том, что я не использую JSF, и мое приложение работает в кластере.

Я готов применить этот шаблон, но мне было интересно, где я должен сохранить карту пользователя? Есть ли контекст, видимый для всех машин в кластере?

Заранее спасибо

ответ

2

Дело о запуске приложения на кластере является более важным и актуальным, чем отсутствие JSF.

Требование, предъявляемое кластером к любому решению, заключается в том, что для решения требуется использование общего хранилища, доступного для всех членов кластера. Там будут несколько возможных решений, которые учитывают это требование:

  • Использование базы данных для хранения списка всех текущих зарегистрированных пользователей (с идентификатором, чтобы определить их сессии; JSESSIONID можно было бы использовать, но лучше используйте идентификатор, который гарантированно будет уникальным для всех членов кластера). Даже комбинация идентификатора пользователя и идентификатора члена кластера будет выполнена. Это самый простой способ, но вам потребуется проверить, как ваш код обрабатывает переход на другой ресурс (возможно, вам придется обновлять записи в базе данных при сбое сеанса).
  • Используйте контекст приложения (ServletContext). Это возможное решение, но не рекомендуется вообще. Хотя контекст приложения обязательно должен обновляться во всех членах кластера, существует потребность в обновлении содержимого (увеличение сетевого трафика среди членов кластера).
  • Используйте распределенное кэширующее решение, такое как Terracotta или Coherence. Это решение почти такое же, как и предыдущее, за исключением того, что сеанс «карта» не будет управляться в ServletContext. Сетевой трафик связан с обновлением распределенного кеша.
Смежные вопросы