[ 
http://www.stripesframework.org/jira/browse/STS-847?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ben Gunter resolved STS-847.
----------------------------

    Resolution: Not a Bug
      Assignee: Ben Gunter

This is expected behavior since 1.5.4. The layout tags used to buffer the 
entire page content in memory and then dump it to the client at the end. This 
was problematic for large pages. The tags were changed in 1.5.4 to stream to 
the client as they execute. Without going into too much detail, I'll just say 
that requires pages to execute more than once. (Feel free to examine the source 
code if you're curious how it works.)

If performance is affected it is negligible. Memory use can be dramatically 
better, depending on the size of the page being generated.

> layout-component forces additional loading of full page
> -------------------------------------------------------
>
>                 Key: STS-847
>                 URL: http://www.stripesframework.org/jira/browse/STS-847
>             Project: Stripes
>          Issue Type: Bug
>          Components: Tag Library
>    Affects Versions: Release 1.5.6
>            Reporter: Roman Kosenko
>            Assignee: Ben Gunter
>              Labels: layout
>
> Let's create, for example, test-layout.jsp:
> <%@taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%>
> <stripes:layout-definition>
>       <stripes:layout-component name="test_component"/>
> </stripes:layout-definition>
> and sample test.jsp:
> <%@taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%>
> <stripes:layout-render name="/test-layout.jsp">
>       <stripes:layout-component name="test_component">
>               test
>       </stripes:layout-component>
> </stripes:layout-render>
> <%
>       new Exception().printStackTrace();
> %>
> when we try to load our test.jsp page we can see that this page is executed 
> twice:
> java.lang.Exception
>       at org.apache.jsp.test_jsp._jspService(test_jsp.java:74)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
>       at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
>       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:927)
>       at 
> org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684)
>       at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678)
>       at 
> net.sourceforge.stripes.tag.layout.LayoutContext.doInclude(LayoutContext.java:191)
>       at 
> net.sourceforge.stripes.tag.layout.LayoutComponentRenderer.write(LayoutComponentRenderer.java:133)
>       at 
> net.sourceforge.stripes.tag.layout.LayoutComponentTag.doStartTag(LayoutComponentTag.java:202)
>       at 
> org.apache.jsp.test_002dlayout_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f0(test_002dlayout_jsp.java:119)
>       at 
> org.apache.jsp.test_002dlayout_jsp._jspx_meth_stripes_005flayout_002ddefinition_005f0(test_002dlayout_jsp.java:97)
>       at 
> org.apache.jsp.test_002dlayout_jsp._jspService(test_002dlayout_jsp.java:70)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
>       at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
>       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:927)
>       at 
> org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684)
>       at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678)
>       at 
> net.sourceforge.stripes.tag.layout.LayoutContext.doInclude(LayoutContext.java:191)
>       at 
> net.sourceforge.stripes.tag.layout.LayoutRenderTag.doEndTag(LayoutRenderTag.java:155)
>       at 
> org.apache.jsp.test_jsp._jspx_meth_stripes_005flayout_002drender_005f0(test_jsp.java:120)
>       at org.apache.jsp.test_jsp._jspService(test_jsp.java:70)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
>       at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
>       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
>       at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>       at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
>       at 
> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:269)
>       at 
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
>       at 
> org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:1731)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:722)
> java.lang.Exception
>       at org.apache.jsp.test_jsp._jspService(test_jsp.java:74)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
>       at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
>       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
>       at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>       at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
>       at 
> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:269)
>       at 
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
>       at 
> org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:1731)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:722)
> I think that this is:
> 1) unintuitive and undocumented behavior;
> 2) too overhead in performance context (especially when we have a dozen of 
> components);
> 3) may have side effect.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to