Pessoal, estou me deparando com este erro “java.lang.IllegalStateException: Cannot forward after response has been committed” sei que é por causa de um forward depois de um response…
Só que meu método se baseia em pegar um arquivo de um diretório, e retornar a opção de salvar o arquivo.
meu método:
[code]public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
NomeArquivoExcel arquivoExcel = new NomeArquivoExcel();
File arq = arquivoExcel.NomeExcel();
if(!arq.exists()){
msgRetorno = "Arquivo Inexistente";
} else {
response.setHeader("Content-Disposition", "filename=" + arq.getName());
response.setContentType("application/vnd.ms-excel");
ServletOutputStream out;
out = response.getOutputStream();
FileInputStream fin = new FileInputStream(arq);
BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(out);
int ch =0; ;
while((ch=bin.read())!=-1)
{
bout.write(ch);
}
bin.close();
fin.close();
bout.close();
out.close();
arq.delete();
}
request.setAttribute("msgRetorno", msgRetorno);
request.getRequestDispatcher("uploadArquivoConsultaColetiva.jsp").forward(
request, response);
}[/code]
stack trace:
GRAVE: Servlet.service() for servlet [servlet.br.com.simcard.ServletUploadConsultaColetiva] in context with path [/SIMCards] threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:339)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at servlet.br.com.simcard.ServletUploadConsultaColetiva.doGet(ServletUploadConsultaColetiva.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Só que está funcionando normal, retorna a mensagem, e da a opção de baixar o arquivo… só não queria que ficasse “sujando o log” parecendo que deu erro