Broken pipe

Galera,

Tenho uma app rodando no Tomcat 3.3.2, em um server Unix-Like (não me pergunte qual) e em uma das telas me ocorre o seguinte erro, quando tento acessá-la:

Context log: path="/dinap" Error in jsp service() : Broken pipe javax.servlet.ServletException: Broken pipe at org.apache.jasper.runtime.JspServlet.service(JspServlet.java:375) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503) at org.apache.tomcat.core.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:163) at dinap.security.servlet.AuthorizationController.doPost(AuthorizationController.java:420) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160) at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338) at java.lang.Thread.run(Thread.java:536) Context log: path="/dinap" <b>Internal Servlet Error:</b><br> &lt;pre&gt; javax.servlet.ServletException: Broken pipe at org.apache.jasper.runtime.JspServlet.service(JspServlet.java:375) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503) at org.apache.tomcat.core.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:163) at dinap.security.servlet.AuthorizationController.doPost(AuthorizationController.java:420) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160) at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338) at java.lang.Thread.run(Thread.java:536) &lt;/pre&gt; <b>Root cause:</b> &lt;pre&gt; java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:124) at org.apache.tomcat.service.http.HttpResponseAdapter.sendStatus(HttpResponseAdapter.java:141) at org.apache.tomcat.service.http.HttpResponseAdapter.endHeaders(HttpResponseAdapter.java:111) at org.apache.tomcat.core.BufferedServletOutputStream.sendHeaders(BufferedServletOutputStream.java:127) at org.apache.tomcat.core.BufferedServletOutputStream.reallyFlush(BufferedServletOutputStream.java:239) at org.apache.tomcat.core.ResponseImpl.flushBuffer(ResponseImpl.java:330) at org.apache.tomcat.core.HttpServletResponseFacade.flushBuffer(HttpServletResponseFacade.java:235) at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:195) at icd.templatesec._0002ficd_0002ftemplatesec_0002fdinapSimplesGruposPublic_0002ejspdinapSimplesGruposPublic_jsp_0._jspService(_0002ficd_0002ftemplatesec_0002fdinapSimplesGruposPublic_0002ejspdinapSimplesGruposPublic_jsp_0.java:504) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:126) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java:174) at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java:261) at org.apache.jasper.runtime.JspServlet.service(JspServlet.java:369) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503) at org.apache.tomcat.core.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:163) at dinap.security.servlet.AuthorizationController.doPost(AuthorizationController.java:420) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160) at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338) at java.lang.Thread.run(Thread.java:536) &lt;/pre&gt;

Nas demais telas parece que tudo está ok. A única coisa que achei a respeito foi esta thread (http://archives.postgresql.org/pgsql-jdbc/2003-09/msg00227.php), porém não me diz muito.

Alguém tem alguma idéia?

Já trabalhei em um projeto que rolava isso…

Segundo o arquiteto que trabalha comigo, isso acontecia devido a umas quedas “relâmpago” da rede, coisa imperceptível por nós operando o sistema, mas que gerava exception… por isso, ele botou no tratamento de erro da aplicação um IGNORE ESSE ERRO e ai beleza, não influenciava em nada na operação da aplicação, não perdia request, nada mesmo… acontecia milhares de vezes durante o dia…

Bom, é o que eu sei sobre isso…

O estranho é que rola apenas em uma tela.
Bom, estou supondo que seja isso, mesmo porque eu não tenho acesso ao server e solicitei os logs para ver isso.

Estava com esse problema usando JRun, porque na minha página JSP, eu criava um objeto em JavaScript que dentro criava um Image() e depois eu atribuia o SRC dela, só que quando o SRC estava em branco dava o erro … eu coloquei um IF e parou de dar o FAMOSO Broken pipe.

Parece que quando algum recurso (figura, filme e etc) é chamado no meio do JSP e por acaso está em branco, dá o Broken Pipe, se eu coloco um valor de recurso que não existe a mensagem que dá é “File Not Found” e ainda me dá o nome do recurso.

Era assim :
function Item(parmNome,parmLabel,parmNomeFigura,parmTip){
this.nome = parmNome;
this.label = parmLabel;
this.nomeFigura = parmNomeFigura;
this.figura = new Image();
this.figura.src = parmNomeFigura;
if(parmTip == null){
this.tip = parmLabel;
}else{
this.tip = parmTip;
}
}

ficou assim
function Item(parmNome,parmLabel,parmNomeFigura,parmTip){
this.nome = parmNome;
this.label = parmLabel;
this.nomeFigura = parmNomeFigura;
this.figura = new Image();
if(parmNomeFigura != “”){
this.figura.src = parmNomeFigura;
}
if(parmTip == null){
this.tip = parmLabel;
}else{
this.tip = parmTip;
}
}

Talvez não seja exatamente o mesmo tipo de aplicação, mas pode ser que funcione…

Depois de quebrar bastante a cabeça consegui resolver de 2 maneiras:

Talvez ajude se ainda já não conseguiu de outra forma…

[]'s

Esse erro está ocorrendo no GUJ