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

3 respostas
P

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:
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);
     }
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

3 Respostas

D

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

P

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

Valeu

D

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

Valeu


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

Criado 2 de agosto de 2013
Ultima resposta 2 de ago. de 2013
Respostas 3
Participantes 2