Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Di default, ogni WAR ha una sua sessione e NON può comunicare con altri WARs se non attraverso SOPA/WSDL, RestFull API, condivisione del plugin-service.jar nel WEB-INF/lib ecc. 

Però se si vuole, per esempio, condividere un oggetto/attributo bisogna andare a settare alcune cose nei descrittori XML dei plugins usati.

Quello che vogliamo fare e far comunicare la Portlet 1 con la Portlet 2 (parlo di portlet e non di plugin perchè ipotizzo che ogni plugin/WAR abbia una sola portlet, quindi è la stessa cosa da questo punto di vista).

Passo 1: Portlet 1 (WAR 1)

Nel descrittore liferay-portlet.xml aggiungere:

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

Passo 2: in qualche punto della Portlet 1 fare un setAttribute():
 

PortletSession session = renderRequest.getPortletSession();

session.setAttribute("sessionValue", some-value ,PortletSession.APPLICATION_SCOPE);

Passo 3: Reuperare il valore dalla Portlet 2 (WAR 2):
PortletSession ps = renderRequest.getPortletSession();
String tabNames = (String)ps.getAttribute("sessionValue ",PortletSession.APPLICATION_SCOPE);
 
Average (1 Vote)
The average rating is 5.0 stars out of 5.