Spring Portlet MVC и сессионные объекты - PullRequest
2 голосов
/ 15 июля 2010

Я работаю над некоторыми портлетами, которые я кладу на Springs Portlet MVC framework. Теперь возникает один вопрос: в этих портлетах мне нужны некоторые сеансовые объекты (информация о пользователе и т. Д.) - для создания этих объектов я думал об использовании фильтра. Теперь у меня вопрос: нужно ли объявлять фильтр в обычном контексте веб-приложения (web.xml) или мне нужно разместить фильтр на уровне портлета? (размещение фильтров портлетов на portlet.xml)

Если я не полностью ошибаюсь, все портлеты Spring запускаются в контексте Spring, который имеет доступ к обычному контексту веб-приложения, поэтому должно быть достаточно объявить фильтр как DelegatingFilterProxy, где создаются мои объекты сеанса.

Я не прав с этой логикой?

Обновление:

Хорошо - возможно, я хочу что-то невозможное: я просто хочу создать сессионный компонент с информацией о пользователе, если пользователь входит в портал (JBoss Portal). Я попытался использовать фильтр / прослушиватель для достижения этой цели, но ни один из моих подходов не работает. Я надеялся, что благодаря переносу моих портлетов JSR-168 на портлеты, поддерживаемые Spring.

Я поместил фильтр в свой web.xml, но он срабатывает только при выходе пользователя из системы, а не при входе в систему.

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Начиная с JSR 286 (портлет 2.0):

Интерфейс PortletSession определяет две области хранения объектов: APPLICATION_SCOPE и PORTLET_SCOPE.

Есть также некоторые другие параметры для настройки обработки вашего сеанса (см. Спецификацию).

По большому счету каждый портлет в вашем portlet.xml имеет свой собственный сеанс (область действия портлета).Это сохраняется в сеансе HTTP (область приложения) с ключом вида javax.portlet.p.<ID>?<ATTRIBUTE_NAME>).Если у вас есть два экземпляра одного и того же портлета, каждый из них будет иметь свой собственный сеанс.

Таким образом, то, как вы поступите с этим, зависит от области действия вашей сеансовой переменной.

0 голосов
/ 14 января 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...