These issues are now covered in ROL-1281: http://opensource.atlassian.com/projects/roller/browse/ROL-1281
I just committed the changes to trunk. - Dave On 10/21/06, Anil Gangolli <[EMAIL PROTECTED]> wrote:
CharEncodingFilter sets the request encoding as well. That part needs to stay and I think it should be mapped to /* as it currently is. The proposal correctly excises the struts-related part. I'm +1 on it. --a. ----- Original Message ----- From: "Allen Gilliland" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Friday, October 20, 2006 2:10 PM Subject: Re: avoiding session creation for unauthenticated users > +1 to all of these. > > In fact. #1 from the CharEncodingFilter should probably be pushed out > into its own filter since the CharEncodingFilter is applied to /* which > affects all requests and that code is only relevant to struts. I would > think it'f more appropriate to put that in it's own filter which is just > mapped to /roller-ui/* > > -- Allen > > > Dave wrote: >> Those all look like good and safe fixes to me. >> >> Anybody object to my making these changes in the trunk? >> >> - Dave >> >> >> On 10/20/06, Robert Yates <[EMAIL PROTECTED]> wrote: >>> Hello, >>> >>> I work alongside Elias here at IBM. >>> >>> We have been recently experimenting with Roller under heavy loads and >>> one of the first things we noticed was the fairly heavy memory usage. >>> When we investigated this we found that there were lots of Sessions >>> and RollerSessions on the heap even though our load was a read only >>> load. >>> >>> I've gone through the code looking at the areas that create sessions, >>> and found a few. I list these below and hope you'll consider these >>> fairly minor changes as something that could be included in 3.1 >>> >>> 1) CharEncodingFilter >>> >>> remove the following lines >>> >>> // Keep JSTL and Struts Locale's in sync >>> // NOTE: The session here will get created if it is not >>> present. This code was taken from its >>> // earlier incarnation in RequestFilter, which also caused the >>> session to be created. >>> HttpSession session = ((HttpServletRequest) req).getSession(); >>> if (mLogger.isDebugEnabled()) mLogger.debug("Synchronizing >>> JSTL and Struts locales"); >>> Locale locale = (Locale) >>> session.getAttribute(Globals.LOCALE_KEY); >>> if (locale == null) >>> { >>> locale = req.getLocale(); >>> } >>> if (req.getParameter("locale") != null) >>> { >>> locale = new Locale(req.getParameter("locale")); >>> } >>> session.setAttribute(Globals.LOCALE_KEY, locale); >>> Config.set(session, Config.FMT_LOCALE, locale); >>> >>> given that ?locale= is now deprecated, this code doesn't really do >>> anything. If JSTL and Struts don't find the session attribute (and in >>> JSTL's case attributes on the page or request) then they will default >>> to the "req.getLocale()". So putting the value of req.getLocale() >>> into the struts and JSTL session attributes is now redundant. >>> >>> 2) PageServlet, SearchServlet (and possibly PreviewServlet, >>> PreviewServlet is not as important as there will already be a session >>> for the logged in user). >>> >>> All these servlets make this call. >>> >>> PageContext pageContext = JspFactory.getDefaultFactory().getPageContext( >>> this, request, response,"", true, 8192, true); >>> >>> The third to last variable indicates whether the session should be >>> created and it is currently set to "true". >>> >>> Could we change the calls to >>> >>> PageContext pageContext = JspFactory.getDefaultFactory().getPageContext( >>> this, request, response,"", false, 8192, true); >>> >>> 3) Index.jsp >>> >>> Am not sure whether this is still a problem. I just pulled the latest >>> build and I am not sure that it is still called. If it is still used >>> then could we add the following "session" attribute to the page >>> directive which will cause the session to not be created. >>> >>> <%@ >>> page import="org.apache.roller.config.RollerRuntimeConfig" >>> session="false"%> >>> >>> Please let me know what you think, >>> >>> Thanks, >>> >>> Rob >>> >
