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

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)

[code]
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;

}[/code]

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