|
Author: jleroux
Date: Sat Jun 23 14:59:14 2012 New Revision: 1353136 URL: http://svn.apache.org/viewvc?rev=1353136&view=rev Log: "Applied fix from trunk for revision: 1353135 " ------------------------------------------------------------------------ r1353135 | jleroux | 2012-06-23 16:57:18 +0200 (sam., 23 juin 2012) | 2 lines Closes "Login out on a cluster handled by DeltaManager causes a NPE" https://issues.apache.org/jira/browse/OFBIZ-4289 Removes all changes related to this issue. We will see later if ever it proves to be a real issue. ------------------------------------------------------------------------ Modified: ofbiz/branches/release11.04/ (props changed) ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Propchange: ofbiz/branches/release11.04/ ------------------------------------------------------------------------------ Merged /ofbiz/trunk:r1353135 Modified: ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java?rev=1353136&r1=1353135&r2=1353136&view=diff ============================================================================== --- ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java (original) +++ ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Sat Jun 23 14:59:14 2012 @@ -39,18 +39,16 @@ import javolution.util.FastList; import javolution.util.FastMap; import org.ofbiz.base.component.ComponentConfig; -import org.ofbiz.base.container.ContainerConfig; -import org.ofbiz.base.container.ContainerException; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.GeneralException; import org.ofbiz.base.util.KeyStoreUtil; import org.ofbiz.base.util.StringUtil; +import org.ofbiz.base.util.StringUtil.StringWrapper; import org.ofbiz.base.util.UtilFormatOut; import org.ofbiz.base.util.UtilHttp; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilProperties; import org.ofbiz.base.util.UtilValidate; -import org.ofbiz.base.util.StringUtil.StringWrapper; import org.ofbiz.entity.Delegator; import org.ofbiz.entity.DelegatorFactory; import org.ofbiz.entity.GenericEntityException; @@ -447,7 +445,7 @@ public class LoginWorker { if (setupNewDelegatorEtc) { // now set the delegator and dispatcher in a bunch of places just in case they were changed - setWebContextObjects(request, response, delegator, dispatcher, true); + setWebContextObjects(request, response, delegator, dispatcher); } // check to see if a password change is required for the user @@ -476,47 +474,33 @@ public class LoginWorker { return "error"; } } - - /* persistSerialized is set at false in the context of a cluster when using (at least) DeltaManager. - Because we have no easy ways to set DeltaManager.pathname to null from OFBiz - So persistSerialized is set to true when login out. This prevent a NPE due to non serialized objects put in session*/ - private static void setWebContextObjects(HttpServletRequest request, HttpServletResponse response, Delegator delegator, LocalDispatcher dispatcher, Boolean persistSerialized) { + private static void setWebContextObjects(HttpServletRequest request, HttpServletResponse response, Delegator delegator, LocalDispatcher dispatcher) { HttpSession session = request.getSession(); // NOTE: we do NOT want to set this in the servletContet, only in the request and session session.setAttribute("delegatorName", delegator.getDelegatorName()); request.setAttribute("delegator", delegator); - if (!persistSerialized) { - session.setAttribute("delegator", null); - } else { - session.setAttribute("delegator", delegator); - } + session.setAttribute("delegator", delegator); request.setAttribute("dispatcher", dispatcher); - if (!persistSerialized) { - session.setAttribute("dispatcher", null); - } else { - session.setAttribute("dispatcher", dispatcher); + session.setAttribute("dispatcher", dispatcher); + + // we also need to setup the security and authz objects since they are dependent on the delegator + try { + Security security = SecurityFactory.getInstance(delegator); + request.setAttribute("security", security); + session.setAttribute("security", security); + } catch (SecurityConfigurationException e) { + Debug.logError(e, module); } - if (persistSerialized) { - // we also need to setup the security and authz objects since they are dependent on the delegator - try { - Security security = SecurityFactory.getInstance(delegator); - request.setAttribute("security", security); - session.setAttribute("security", security); - } catch (SecurityConfigurationException e) { - Debug.logError(e, module); - } - - try { - Authorization authz = AuthorizationFactory.getInstance(delegator); - request.setAttribute("authz", authz); - session.setAttribute("authz", authz); - } catch (SecurityConfigurationException e) { - Debug.logError(e, module); - } + try { + Authorization authz = AuthorizationFactory.getInstance(delegator); + request.setAttribute("authz", authz); + session.setAttribute("authz", authz); + } catch (SecurityConfigurationException e) { + Debug.logError(e, module); } // get rid of the visit info since it was pointing to the previous database, and get a new one @@ -652,22 +636,7 @@ public class LoginWorker { delegator = DelegatorFactory.getDelegator(delegatorName); LocalDispatcher dispatcher = ContextFilter.makeWebappDispatcher(session.getServletContext(), delegator); - // get the container configuration - String ofbizHome = System.getProperty("ofbiz.home"); - String configFile = ofbizHome + "/framework/base/config/ofbiz-containers.xml"; - ContainerConfig.Container cc = null; - String mgrClassName = null; - try { - cc = ContainerConfig.getContainer("catalina-container", configFile); - mgrClassName = ContainerConfig.getPropertyValue(cc, "manager-class", ""); - } catch (ContainerException e) { - Debug.logError(e, "No catalina-container configuration found in container config!"); - } - if ("org.apache.catalina.ha.session.DeltaManager".equals(mgrClassName)) { - setWebContextObjects(request, response, delegator, dispatcher, false); - } else { - setWebContextObjects(request, response, delegator, dispatcher, true); - } + setWebContextObjects(request, response, delegator, dispatcher); } // DON'T save the cart, causes too many problems: if (shoppingCart != null) session.setAttribute("shoppingCart", new WebShoppingCart(shoppingCart, session)); @@ -981,7 +950,7 @@ public class LoginWorker { if (!oldDelegatorName.equals(userLogin.getDelegator().getDelegatorName())) { delegator = DelegatorFactory.getDelegator(userLogin.getDelegator().getDelegatorName()); dispatcher = ContextFilter.makeWebappDispatcher(servletContext, delegator); - setWebContextObjects(request, response, delegator, dispatcher, true); + setWebContextObjects(request, response, delegator, dispatcher); } // found userLogin, do the external login... |
| Free forum by Nabble | Edit this page |
