Как очистить атрибут сессии от всей активной сессии в Java? - PullRequest
0 голосов
/ 26 июня 2009

В настоящее время я работаю над веб-проектом, который использует JSP / Servlet и Struts Framework. Мы используем механизм кэширования. Я хочу очистить некоторые атрибуты сеанса от всех активных сеансов определенного события (например, в случае обновления кэша). Так какой же лучший способ реализовать то же самое?

Ответы [ 2 ]

4 голосов
/ 26 июня 2009

Позвольте мне угадать ... вы сохраняете значение из кэша в переменную сеанса, верно?

Самый чистый способ сделать это - извлекать значение из кеша каждый раз, когда вам это нужно, и позволить кешу управлять истечением / перезагрузкой и т. Д. За это отвечает кеш.

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

Приветствия

1 голос
/ 26 июня 2009

Вам необходимо предоставить класс, который реализует интерфейс HttpSessionActivationListener (часть сервера api) и зарегистрировать его в web.xml.

Затем вы можете отслеживать активные сеансы и использовать эту информацию, чтобы получить доступ к сеансам и выполнить обновление атрибута. По сути, класс реализации будет одноэлементным, поэтому вы должны внимательно относиться к вопросам синхронизации во время отслеживания сеансов.

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

...