Java.lang.IllegalStateException: Cannot forward after response has been committed [RESOLVIDO]

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

Mas você tem mesmo a necessidade de redirecionar?
Senão, é só remover essa parte do código, pois o response já foi enviado…

vdd… resolveu mesmo… eu achei que necessitava redirecionar para a página solicitante…

Valeu

[quote=Pacato]vdd… resolveu mesmo… eu achei que necessitava redirecionar para a página solicitante…

Valeu[/quote]
Também tive este problema.
No meu caso, usando Struts 1, foi só colocar “return null;”