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]