Hi all,
I am using currently using Tomcat 4.1.12 for an application I have
developed. I have a report that displays a large list of records retrieved from
a database. The report is generated using a JSP. This operation seems to take a
very long time and I assumed initially the time was spent in the data
retrieval. However I have generated a number of stack traces while my
application is "hanging" and the thread creating the report seems to be
consistently waiting on a condition within the Jasper functionality. The
generated stack trace from the thread creating the report is as follows:
"Thread-6" daemon prio=5 tid=0x24f92788 nid=0x714 waiting on condition
[25afe000..25affd88]
at
org.apache.jasper.runtime.BodyContentImpl.reAllocBuff(BodyContentImpl.java:82)
at
org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:144)
at
org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:155)
at
org.apache.jasper.runtime.BodyContentImpl.print(BodyContentImpl.java:291)
at
org.apache.struts.util.ResponseUtils.writePrevious(ResponseUtils.java:184)
at
org.apache.struts.taglib.logic.IterateTag.doAfterBody(IterateTag.java:412)
at
org.apache.struts.taglib.nested.logic.NestedIterateTag.doAfterBody(NestedIterateTag.java:160)
at
org.apache.jsp.ViewInvoiceByProduct_jsp._jspService(ViewInvoiceByProduct_jsp.java:275)
at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:575)
at
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:498)
at
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:768)
at
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:359)
at
org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:703)
at
org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:814)
at
org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:467)
at
org.apache.jsp.classicLayout_jsp._jspx_meth_tiles_insert_1(classicLayout_jsp.java:145)
at
org.apache.jsp.classicLayout_jsp._jspService(classicLayout_jsp.java:85)
at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1033)
at
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:268)
at
org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:248)
at
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
at
org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
at
ie.mcps.framework.web.McpsiRequestProcessor.processActionForward(McpsiRequestProcessor.java:83)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1339)
at
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:489)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:534)
I have generated a number of thread dumps and each time Thread-6 is
waiting on the same condition until eventually the report is displayed. I am
currently executing the tests on my Windows 2000 machine.
I have tested the same functionality using Tomcat 5.5.9 and the report
is generated instantaneously. However it is not an option for me to update to
the latest version of Tomcat so I need to try find a way of resolving these
problems. Any ideas?
Cheers,
Leonard
This e-mail and any files transmitted with it are confidential and may be
privileged and are intended solely for the individual named/ for the use of the
individual or entity to whom they are addressed.If you are not the intended
addressee, you should not disseminate, distribute or copy this e-mail.Please
notify the sender immediately if you have received this e-mail by mistake and
delete this e-mail from your system.If you are not the intended recipient, you
are notified that reviewing, disclosing, copying, distributing or taking any
action in reliance on the contents of this e-mail is strictly prohibited.Please
note that any views or opinions expressed in this e-mail are solely those of
the author and do not necessarily represent those of Traventec Limited. This
e-mail has been swept for computer viruses however Traventec Limited accepts no
liability for any damage caused by any virus transmitted by this e-mail.