null

Liferay: взаимодейстие портлетов через общую сессию

По умолчанию в Liferay каждый WAR имеет собственную сессию, которая недоступна из других WAR'ов, но иногда необходимо организовать взаимодействие между портлетами через общую сессию. Чтобы иметь доступ к атрибутам сессии из различных портлетов в различных WAR'ах, нужно:

Добавить в liferay-portlet.xml следующее:

<portlet>
    <portlet-name>...</portlet-name>		
    <private-session-attributes>false</private-session-attributes>
    ...
</portlet>

Для получения атрибута из общей сессии нужно будет использовать префикс LIFERAY_SHARED_. При желании, его можно изменить в portal-ext.properties, присвоив нужное значение атрибуту request.shared.attributes.

Теперь код задания и получения параметров из общей сессии будет выглядеть так:

//set attribute
portletSession.setAttribute("LIFERAY_SHARED_test", test, 
PortletSession.APPLICATION_SCOPE);

//get attribute
portletSession.getAttribute("LIFERAY_SHARED_test", 
PortletSession.APPLICATION_SCOPE);