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

1 resposta
I

Estou sem saber o que fazer aqui.
Estou trabalhando em cima desse codigo e funcionava bem com o tomcat 4.0.4 porem após a instalação do tomcat 5.5.17 em algumas aplicações comeca a aparecer esse erro.
Alguem sabe o que pode ser ?

java.lang.IllegalStateException: Cannot forward after response has been committed
TOOL.GAG.WebGAGGUIManager.handleEvent(WebGAGGUIManager.java:265)
COPSE.CLIENT.GUI.WebCGUIManager.doGet(WebCGUIManager.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

public void handleEvent(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException
	{
		
		COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print("[DEBUG] WebGAGGUIManager - INICIO WEBGUI");

		//esta variavel é usada como um cliente para comunicação com o copse
		//o uso desta variavel tem CONFlicado em alguns erros. Deve verificar como esta
		//sendo feita a manutenção das conexões estabelecidas com o COPSE.
		pCOPSEClient = (COPSEClient) req.getSession( ).getAttribute("pCOPSEClient");
		//-------------------------------------------------------------------------------------//

		//captura o evento a ser manipulado
        int evt = ( req.getParameter("evento") == null ? COPSE.CEvent.EvCOPSE_Undefined : new Integer( req.getParameter("evento") ).intValue( ) );

		COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print("[DEBUG] WebGAGGUIManager - Handle New Event: " + evt );

		//captura o rotulo associado ao evento 
		String labelEvent		= CEvent.getEventLabel( evt );
		
		System.out.println(evt + " labelEvent");	
		System.out.println(labelEvent + " labelEvent");		
		
		String nameController  =   this.discoverGAGControllerByEventLabel( labelEvent );

		System.out.println(nameController + " nome");
		/* CONFLEMENTAR AQUI A DISTRIBUICAO DOS EVENTOS PARA OS DEMAIS CONTROLLERS
		 */
			String retPage = req.getParameter( "retPage" ); 
				COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print( "retPage in WebGAGGUIManager: "+ retPage);
			//se consegui resolver name da servlet controller dispacha requisicao
			/*if( nameController != null )
			{
					//encaminha requisicao de criar group paraq CONFController
					COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print("[DEBUG] VAI DAR PAU 1" );
					RequestDispatcher RD = req.getRequestDispatcher( nameController );
					COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print("[DEBUG] VAI DAR PAU 2" );
					RD.forward(req, res);
					COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print("[DEBUG] DEU PAU" );
					return;
			}*/


		//se name da servlet controller nao foi resolvido
		//avalia o evento ou dispacha para super classe ( WebCGuiManager)
		switch ( evt )
		{	
			case CEvent.EvGAG_Open_Tool:   //abre a ferramenta.
				this.GAGOpenTool( req, res );
			break;

			case CEvent.EvGAG_List_Groupings: //lista os agrupamentos criados
			{
				this.mGAGGroupingController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_New_Grouping: //novo agrupamento, lista as tabelas do COPSE
			{
				this.mGAGGroupingController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Set_Grouping_Tables: //salva as tabelas selcionadas e exibe os campos
			{
				this.mGAGGroupingController.handleEvent(req,res);
			}
			break;
			
			case CEvent.EvGAG_Set_Grouping_Fields: //salva os campos e joins selcionados
			{
				this.mGAGGroupingController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Save_Grouping: //efetua as modificações no banco de dados
			{
				this.mGAGGroupingController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Del_Grouping: //efetua as modificações no banco de dados
			{
				this.mGAGGroupingController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Load_Grouping: //carrega o agrupamento na tela
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;
			
			case CEvent.EvGAG_Add_Filter: //adiciona um filtro no agrupamento
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Show_Field_Values: //carrega o combo na adicao de um novo filtro
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Load_Html_Grouping: //carrega uma tabela em html para exibição dos dados do agrupamento
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Delete_Filter: //exclui um filtro do agrupamento
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Show_Graph: //cria um resultset com GROUP BY e as colunas selecionadas
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;

			case CEvent.EvGAG_Upload_Filter:
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;
			
			case CEvent.EvGAG_Download_Filter:
			{
				this.mGAGViewController.handleEvent(req,res);
			}
			break;

			/*case 6666: //TESTE DE DOWNLOAD DE ARQUIVO
			{
				res.setContentType("application/octet-stream");
				res.setHeader( "Content-Disposition", "attachment; filename=file.txt");
				Writer out = new OutputStreamWriter(res.getOutputStream());
				out.write("Everaldo");// Set your data here
				out.close();
			}
			break;
			*/

			default:
			{
				super.handleEvent( req, res );
				return;
			}
		}

		//captura página de retorno 
		//Definimos que para a aplicação do GAG toda requisicao feita 
		//ao gerenciador de interface do GAG ( WebGAGGUIManager)
		//deve conter uma página de retorno para a qual o resultado do pro
		//cessamento será encaminhado. Esta página de retorno pode ser uma
		//servlet ou qualquer outro tipo de recurso disponivel no servidor web
//		String retPage = req.getParameter( "retPage" ); 
		COMPONENT.AWARENESS.EVENTLOG.COPSEEventLogPrinter.print( "retPage in WebGAGGUIManager: "+ retPage, false );

		req.removeAttribute( "retPage" );	// para nao recarregar este evento novamente

		//dispacha a requisicao para a pagina de retorno especificada.
		//possivelmente uma view page (JSP)


		req.getRequestDispatcher( retPage ).forward( req, res );



		return;

    }

1 Resposta

I

Ninguém pode ajudar ??? :? :? :?

Criado 29 de junho de 2006
Ultima resposta 5 de jul. de 2006
Respostas 1
Participantes 1