Boa tarde a todos,
Estou com um problema, talvez simples, que não estou conseguindo resolver…
Eu tenho um código javascript que num dado momento requisita uma imagem. Essa requisição é feita a uma servlet que monta essa imagem e retorna. O problema ocorre porque de alguma forma estão vindo duas requisições dessa imagem (meu código a requisita somente uma vez) e em uma dessas requisições ocorre o seguinte erro:
ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
at org.apache.coyote.tomcat5.OutputBuffer.doFlush(OutputBuffer.java:331)
at org.apache.coyote.tomcat5.OutputBuffer.flush(OutputBuffer.java:297)
at org.apache.coyote.tomcat5.CoyoteOutputStream.flush(CoyoteOutputStream.java:85)
.
.
.
O código da servlet é o seguinte:
String soperacao = request.getParameter( "operacao" );
if ( soperacao == null || soperacao.length() == 0 ){
return;
}
synchronized ( MUTEX ) {
System.out.println( ">>>>>>>>>>chegou aqui...." );
try {
conexao.conecta();
BufferedImage image;
image = processaGrafico( request, response ); // código que irá gerar uma imagem do gráfico
if ( "SALVAR_GRAFICO".equals( soperacao ) ) {
String sidSessao = request.getSession().getId();
String snomeArquivo = sidSessao + "chart" + Math.random();
response.setContentType( "image/png" );
response.setHeader( "Content-Disposition", "attachment; filename=\"" + snomeArquivo + ".png\"" );
}
ServletOutputStream outputStream = response.getOutputStream();
try {
ImageIO.write( image, "png", outputStream );
}
catch ( IOException e ) {
e.printStackTrace();
}
outputStream.flush();
}
catch ( SQLException e ) {
e.printStackTrace();
}
finally {
conexao.desconecta();
}
}
Queria saber por que está ocorrendo esse erro? Por que ocorre somente em uma das requisições? Por que vem duas requisições? E o que posso fazer para resolver?
Desde já agradeço pela atencao
[]s
Éberson