Пользователи, которые не вошли в портал, не имеют сеанса. Вы можете иметь портал для отслеживания информации о сеансе для анонимных пользователей, включив публичные сеансы.
http://www-10.lotus.com/ldd/portalwiki.nsf/xpDocViewer.xsp?lookupName=IBM+WebSphere+Portal+7+Product+Documentation#action=openDocument&res_title=Portal_configuration_services_wp7&content=pdcontent
Посмотрите под штурманом сервиса для изменяемого свойства.
Кроме того, я думаю, что это легче выполнить в теме или в фильтрах портлетов. Вы все равно должны иметь доступ к сеансу портала в любом из этих мест, но вам не нужно включать код в каждый портлет.
Вот ссылка на создание глобального фильтра портлетов.
http://wpcertification.blogspot.com/2010/11/applying-global-filter-to-all-portlets.html
UPDATE: Как и любой большой структуры есть много вариантов. Я предлагаю мозговой свалку того, что я могу придумать/найти. Возможно, вам придется экспериментировать и посмотреть, какой метод вы предпочитаете.
Файлы cookie JSESSIONID должны быть одинаковыми для пользователя на протяжении всего сеанса. Если сессия закончится, они получат новый файл cookie JSESSIONID. Используя это, вы сможете отслеживать пользователя через один сеанс, но, возможно, не на нескольких сеансах.
Вы можете использовать getUserPrinipal()
или getRemoteUser()
у объекта PortletRequest. Я не использовал этот метод в то время, поэтому вам нужно будет узнать, какая информация из них выйдет.
Существует также request.getAttribute(PortletRequest.USER_INFO)
. Вам нужно будет сделать некоторую конфигурацию в файле portlet.xml, чтобы вернуть определенные атрибуты в Map Map. Существует пример here. Мы используем ibm-primaryEmail вместо первого и последнего имени, например, пример моего текущего проекта.
Наконец, вы можете изучить использование API PUMA, встроенного в Portal. Это будет немного тяжелее для кодирования и, очевидно, больше контейнера, но должно быть в состоянии сделать практически любую работу, которая вам нужна для пользователей.
попробуйте передать запрос портлета на запрос сервлета и посмотреть идентификатор сеанса. Для этого используйте класс com.ibm.wps.pe.pc.std.core.PortletUtils, я думаю, wp.pe.rt.api.jar попытается найти эту банку в каталогах PortalServer \ app или PortalServer \ base –