Как очистить атрибут сеанса из всех активных сеансов в Java?

StackOverflow https://stackoverflow.com/questions/1047176

Вопрос

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

Это было полезно?

Решение

Вам нужно предоставить класс, который реализует Слушатель HttpSessionActivationListener (часть API сервера) и зарегистрируйте его в web.xml.

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

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

Другие советы

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

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

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

Ваше здоровье

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top