Question

We are using Liferay Portal 6.0, and the portlets are Primefaces 3.4, JSF 2.1, We support having more than one browser tab opened for the same user, and each tab can have up to 15 portlets at a time, each portlet is displaying a JSF page (ViewScopedBean) using iframe.

The problem is that the opened JSF pages (inside a iframe inside a portlet) don't know when their portlets get closed or when the whole browser tab gets closed, So they stay in memory until session times out. And this is causing a major problem in server memory leading to complete failure.

My questions are: How can I have the list of opened pages (views) from server side? and how can I also close them? I know that a ViewScopedBean gets destroyed when it is redirected to another page (a dummy page as a workaround), so can I redirect each page from the list (If I can have it!) from server side?

Thank you very much in advance.

Was it helpful?

Solution

when the whole browser tab gets closed

You can capture a closing tab, with HTML DOM events like beforeunload.

My questions are: How can I have the list of opened pages (views) from server side?

You can list them in an application scoped bean. i.e : Add a view to a list when the view has been called and initiated, and remove it from the list on tab unload/closure ? From that list you can do lot of checkings.. and even close a session if there are no more views associated with it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top