From 9397af1b11a5883fb35801ec4fb996a233377891 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 11 Aug 2015 12:11:09 -0500 Subject: [PATCH 1/2] IDEMPIERE-2756 Background threads losing context when user log out / Fixed context management for web service. / integrated by Carlos Ruiz from hengsin --- .../org/idempiere/adinterface/CompiereService.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java b/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java index bd01f4651f..75f04413ea 100644 --- a/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java +++ b/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java @@ -39,8 +39,6 @@ public class CompiereService { private static CLogger log = CLogger.getCLogger(CompiereService.class); - private Properties m_ctx; - private int m_AD_Client_ID; private int m_AD_Org_ID; private int m_AD_User_ID; @@ -92,7 +90,7 @@ public class CompiereService { * @return context of current request */ public Properties getCtx() { - return m_ctx; + return Env.getCtx(); } /** @@ -113,11 +111,10 @@ public class CompiereService { { CompiereUtil.initWeb(); - m_ctx = new Properties(); m_connected = true; - ServerContext.setCurrentInstance(m_ctx); - Env.setContext( m_ctx, "#AD_Language", "en_US" ); + ServerContext.setCurrentInstance(new Properties()); + Env.setContext(getCtx(), "#AD_Language", "en_US" ); m_language = Language.getLanguage("en_US"); dateFormat = DisplayType.getDateFormat(DisplayType.Date, m_language); @@ -138,7 +135,6 @@ public class CompiereService { { Env.logout(); ServerContext.dispose(); - m_ctx = null; m_loggedin = false; m_connected = false; } @@ -255,7 +251,7 @@ public class CompiereService { m_locale = Lang; m_userName = MUser.getNameOfUser(m_AD_User_ID); - Env.setContext( m_ctx, "#AD_Language", Lang); + Env.setContext( getCtx(), "#AD_Language", Lang); m_language = Language.getLanguage(Lang); Env.verifyLanguage( getCtx(), m_language ); @@ -274,7 +270,7 @@ public class CompiereService { if (log.isLoggable(Level.INFO)) log.info(" #Date = "+ Env.getContextAsDate( getCtx(), "#Date")); Env.setContext( getCtx(), "#M_Warehouse_ID", M_Warehouse_ID ); - Env.setContext(m_ctx, Env.LANGUAGE, m_language.getAD_Language()); + Env.setContext(getCtx(), Env.LANGUAGE, m_language.getAD_Language()); // Create session MSession session = MSession.get (getCtx(), false); From 6ff666e30c9671cbcb971ffa7c06048ef0b2f886 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 11 Aug 2015 12:11:43 -0500 Subject: [PATCH 2/2] IDEMPIERE-2756 Background threads losing context when user log out - fix validation --- org.adempiere.base/src/org/compiere/model/PO.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index 95e3ed0e14..4492e9a891 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -425,8 +425,6 @@ public abstract class PO */ public Properties getCtx() { - if (p_ctx.size() == 0 && Env.getCtx().size() > 0) - p_ctx = Env.getCtx(); return p_ctx; } // getCtx @@ -4676,7 +4674,7 @@ public abstract class PO } private void checkValidContext() { - if (getCtx().size() == 0) + if (getCtx().isEmpty() && getCtx().getProperty("#AD_Client_ID") == null) throw new AdempiereException("Context lost"); }