Перехват вызовов HttpSession в Tomcat 6 - PullRequest
3 голосов
/ 05 октября 2010

Каков рекомендуемый подход для перехвата session.getAttribute () и session.setAttribute ()? Это в приложении на базе Spring, поэтому что-то на основе AOP было бы здорово. Я хотел бы избежать переопределения основных классов Tomcat, если это возможно.

Обновление: Я хочу сохранить фактические сериализованные атрибуты в веб-сервисе.

Ответы [ 2 ]

5 голосов
/ 05 октября 2010

Вы можете реализовать свой собственный сеанс org.apache.catalina.Manager и поменять его в конфигурацию Tomcat , хотя интерфейс выглядит довольно длинным - поэтому, возможно, посмотрите на расширение ManagerBase или StandardManagerfirst.

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

5 голосов
/ 05 октября 2010

Я не знаком с AOP или Spring (или Tomcat). :) Но я знаком с Java

Я настраиваю фильтр и заменяю переменную запроса своим собственным объектом

request = new MyRequest(request);

Затем переопределите getSession () и getSession (логическое значение), чтобы вернуть экземпляр MySession

классы javax.servlet.HttpServletRequest и javax.servlet.HttpSession соответствуют стандарту Java EE и не зависят от Tomcat.

...