diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index 6899059656..a841868c40 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -81,6 +81,8 @@ import org.zkoss.zul.Window; */ public class AdempiereWebUI extends Window implements EventListener, IWebClient { + public static final String DESKTOP_SESSION_INVALIDATED_ATTR = "DesktopSessionInvalidated"; + /** * */ @@ -569,9 +571,11 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb //redirect must happens before removeDesktop below, otherwise you get NPE Executions.getCurrent().sendRedirect("index.zul"); - //remove old desktop - if (desktopCache != null) + //remove old desktop + if (desktopCache != null) { + desktop.setAttribute(DESKTOP_SESSION_INVALIDATED_ATTR, Boolean.TRUE); desktopCache.removeDesktop(desktop); + } } @Override diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionContextListener.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionContextListener.java index 6efd564e81..c09c9933e0 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionContextListener.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionContextListener.java @@ -237,6 +237,11 @@ public class SessionContextListener implements ExecutionInit, return; } + Object sessionInvalidated = desktop.getAttribute(AdempiereWebUI.DESKTOP_SESSION_INVALIDATED_ATTR); + if (sessionInvalidated != null) { + return; + } + if (ServerContext.getCurrentInstance().isEmpty() || !isContextValid()) { setupExecutionContextFromSession(Executions.getCurrent());