package com.vaadin.terminal.gwt.server;\r
\r
import java.io.IOException;\r
+import java.io.OutputStream;\r
import java.io.PrintWriter;\r
import java.io.Serializable;\r
\r
request.setAttribute(ApplicationServlet.REQUEST_APPSTYLE,\r
style);\r
}\r
+\r
dispatcher.include(request, response);\r
\r
+ boolean isLifeRay = request.getPortalContext().getPortalInfo()\r
+ .toLowerCase().contains("liferay");\r
+ if (isLifeRay) {\r
+ /*\r
+ * Temporary support to heartbeat Liferay session when using\r
+ * Vaadin based portlet. We hit an extra xhr to liferay\r
+ * servlet to extend the session lifetime after each Vaadin\r
+ * request. This hack can be removed when supporting porlet\r
+ * 2.0 and resourceRequests.\r
+ * \r
+ * TODO make this configurable, this is not necessary with\r
+ * some custom session configurations.\r
+ */\r
+ OutputStream out = response.getPortletOutputStream();\r
+ byte[] lifeRaySessionHearbeatHack = ("<script type=\"text/javascript\">"\r
+ + "if(!vaadin.postRequestHooks) {vaadin.postRequestHooks = {};}"\r
+ + "vaadin.postRequestHooks.liferaySessionHeartBeat = function()"\r
+ + "{Liferay.Session.extend();};</script>")\r
+ .getBytes();\r
+ out.write(lifeRaySessionHearbeatHack);\r
+ }\r
+\r
} catch (PortletException e) {\r
PrintWriter out = response.getWriter();\r
out.print("<h1>Servlet include failed!</h1>");\r
\r
}\r
}\r
-\r
}\r