Tubería Rota

Estimados:

Tengo una aplicación en java, la cual está instalada en 03 glassfish v3, los cuales están balanceados mediante el mod_proxy mediante apache como front-end. Ahora bien, cada cierto tiempo en los log de los servidores me está apareciendo el siguiente error:

[#|2014-06-22T09:20:32.242-0400|SEVERE|glassfish3.1.2|papeleta.PdfHandler|_ThreadID=178;_ThreadName=Thread-2;|DocumentException: DocumentException: ExceptionConverter: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Tubería rota
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:430)
at com.sun.grizzly.util.buf.ByteChunk.append(ByteChunk.java:385)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:455)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:442)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:160)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at com.lowagie.text.pdf.OutputStreamCounter.write(OutputStreamCounter.java:160)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:154)
at com.lowagie.text.pdf.PdfStream.toPdf(PdfStream.java:307)
at com.lowagie.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObject.java:167)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:370)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:350)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:303)
at com.lowagie.text.pdf.PdfWriter.addToBody(PdfWriter.java:1991)
at com.lowagie.text.pdf.PdfWriter.add(PdfWriter.java:1040)
at com.lowagie.text.pdf.PdfWriter.addDirectImageSimple(PdfWriter.java:1015)
at com.lowagie.text.pdf.PdfWriter.addDirectImageSimple(PdfWriter.java:940)
at com.lowagie.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1204)
at com.lowagie.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1107)
at com.lowagie.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1091)
at com.lowagie.text.pdf.PdfDocument.add(PdfDocument.java:2022)
at com.lowagie.text.pdf.PdfDocument.add(PdfDocument.java:1989)
at papeleta.PdfHandler.onStartPage(PapeletaPdfServlet.java:110)
at com.lowagie.text.pdf.PdfDocument.initPage(PdfDocument.java:2279)
at com.lowagie.text.pdf.PdfDocument.newPage(PdfDocument.java:836)
at com.lowagie.text.pdf.PdfDocument.addPTable(PdfDocument.java:1000)
at com.lowagie.text.pdf.PdfDocument.add(PdfDocument.java:1904)
at com.lowagie.text.Document.add(Unknown Source)
at papeleta.PapeletaPdfServlet.processRequest(PapeletaPdfServlet.java:2736)
at papeleta.PapeletaPdfServlet.doGet(PapeletaPdfServlet.java:2757)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at cl.zeke.armada.msa.filtro.FiltroTicket.doFilter(FiltroTicket.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: Tubería rota
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:108)
at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:76)
at com.sun.grizzly.http.SocketChannelOutputBuffer.flushChannel(SocketChannelOutputBuffer.java:426)
at com.sun.grizzly.http.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:498)
at com.sun.grizzly.http.SocketChannelOutputBuffer.realWriteBytes0(SocketChannelOutputBuffer.java:382)
at com.sun.grizzly.http.SocketChannelOutputBuffer.realWriteBytes(SocketChannelOutputBuffer.java:364)
at com.sun.grizzly.tcp.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:894)
at com.sun.grizzly.tcp.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:167)
at com.sun.grizzly.tcp.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:661)
at com.sun.grizzly.tcp.Response.doWrite(Response.java:685)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:425)
... 60 more
|#]

Ahora bien, averiguando en este sentido alguien por ahí comentó que puede ser un problema de "keep-alive" de las conexiones, de lo cual no estoy muy convencido o más bien carezco de las herramientas o conocimientos necesarios para emitir una opinión informada.

Si alguien de esta grandiosa comunidad pudiera darme una idea o algo por donde empezar se lo agradecería muchísimo.

Afectuosos saludos a todos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Broken Pipe

Por lo visto tienes un servlet que exporta un archivo PDF (que genera al vuelo). Revisa que en tu codigo no apliques un   al   donde no deberia.

También hay que examinar si el tiempo de creación es tan tardado como para qe el browser cierre la conexión. El Broken Pipe sucede cuando se interrumpe la comunicación de una conexión cualquiera (generalmente de un cliente).

Broken Pipe

Voy a incarle el diente a lo que me indicas y luego te cuento.

Gracias por tu atención.