Hi,
We found in
WebSphere Portal
that when you take an action that refreshes the Portal page, like going to another Tab and coming back, the Vaadin portlet re-initializes itself. We are using
Portlet 1.0
functionality i.e. with the Vaadin Servlet.
It seemed the Application was recreated each time so after further investigation we found the following:
-
PortletApplicationContext, method getApplicationContext, gets the WebApplicationContext from the session and, even if it doesn’t change, adds it back to the session
-
this gets interpreted as an unbound / bound by WebSphere container and
-
triggers the javax.servlet.http.HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent) method on AbstractWebApplicationContext which
-
closes all applications
We fixed it by adding a flag to both getApplicationContext methods
boolean newContext = false;
... set flag to true if context is changed ...
if (newContext == true) {
session.setAttribute(WebApplicationContext.class.getName(), cx,
PortletSession.APPLICATION_SCOPE);
}
and this solved our problem.
Question
: why is PortletApplicationContext deprecated ? It is used by ApplicationPortlet which is not deprecated and which we subclass.