0

In logs, i have found that i am getting following exception in stacktrace of tomcat logs & log4j file :

org.apache.tiles.impl.BasicTilesContainer  - Error rendering tile
org.apache.tiles.util.TilesIOException: ServletException including path '/WEB-INF/jsp/layout.jsp'.
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.wrapServletException(ServletTilesRequestContext.java:298)
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.include(ServletTilesRequestContext.java:219)
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:177)
    at org.apache.tiles.context.TilesRequestContextWrapper.dispatch(TilesRequestContextWrapper.java:72)
    at org.apache.struts2.tiles.StrutsTilesRequestContext.dispatch(StrutsTilesRequestContext.java:88)
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:606)
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:246)
    at org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:105)
    at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at cdac.gist.sipeit.filters.ClickjackFilter.doFilter(ClickjackFilter.java:35)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at cdac.gist.sipeit.filters.DisallowingAcceptRangeFilter.doFilter(DisallowingAcceptRangeFilter.java:58)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2441)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2430)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.apache.catalina.connector.Response.getWriter(Response.java:636)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:213)
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:104)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:186)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:126)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:80)
    at org.apache.jsp.WEB_002dINF.jsp.layout_jsp._jspService(layout_jsp.java:104)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.include(ServletTilesRequestContext.java:217)
    ... 36 more

Using struts2 file download stream, i am just giving links on html page and when user clicks on the link an exception gets occured at server end, as mentioned above. I am not sure if this relates with tiles because i am using html body tag in tiles body & layout page as well.

This is my struts2 code –

<action name="download" class="org.make.PDFDownload">
<param name="path">D:/DATA/PDFs/</param>
<result name="downloadFile" type="stream"> 
<param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="contentType">application/pdf</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">4096</param>
</result> 
</action>

This is my Action class code:

public String execute() throws FileNotFoundException
 { 
LOGGER.info("File download execution in PDFDownload class execute method. Downloaded File Name is "+getFileName());
System.out.println("FileName : " + fileName);
System.out.println("Getter " + getFileName());
File fileToDownload = new File(path+fileName);
inputStream = new FileInputStream(fileToDownload);
contentLength = fileToDownload.length(); 
return "downloadedFile"; 
} 

I am not using output stream anywhere. Still i am getting exception on server side.

srikit2014
  • 45
  • 1
  • 7
  • Duplicate http://stackoverflow.com/q/32247434/1700321. – Aleksandr M Aug 27 '15 at 11:39
  • How do you serve files? – Aleksandr M Aug 27 '15 at 11:40
  • I am not using output stream anywhere. Still i am getting exception on server side. Please help us ! – srikit2014 Aug 27 '15 at 11:50
  • 1
    Edit your question don't post code in comments. – Aleksandr M Aug 27 '15 at 11:58
  • I have modified my question. Please help me out to solve this error. I am getting this exception again and again. – srikit2014 Aug 27 '15 at 12:14
  • (Then go back and delete the obsolete comments.) – Dave Newton Aug 27 '15 at 16:48
  • There's something in your code that's attempting to return HTML, perhaps after the file is sent. Hard to say without more details, though. – Dave Newton Aug 27 '15 at 16:49
  • code is not returning html. It simply returns a result name, which is mapped in struts.xml with type= stream. What else you require, please let me know. @DaveNewton – srikit2014 Aug 28 '15 at 05:13
  • Something in your request processing pipeline is trying to return HTML, otherwise it wouldn't be trying to serve a JSP. – Dave Newton Aug 28 '15 at 05:28
  • @DaveNewton I tell you the request flow.. We have a jsp page on which we have number of hyperlinks for downloading files stored on server. When user clicks on link, a request comes to struts2 filter which redirects request to struts.xml, which maps the action and calls the Action class execute method and returns a result. Now the problem here comes is that when the response gets delivered to the client, it again writes the response on the same stream. We are not able to analyze where the problem lies. That's why we have posted our code here. Please help us with the required solution. – srikit2014 Aug 28 '15 at 09:31

1 Answers1

0

Use filter to block IDM multiple requests. I am also getting the same exception.