Broken Pipe

81 views
Skip to first unread message

Adriano 'Stanley'

unread,
Sep 9, 2011, 3:59:40 PM9/9/11
to mList - Java Server Faces
Boa tarde, pessoal.

Em minha aplicação JSF, quando uma requisição demora tempo demais pra ser executada (independente do que está causando essa lentidão) o backing bean perde seu estado a página é recarregada novamente sem os parâmetros que haviam sido passados inicialmente.

Quando analiso o stack trace vejo que há uma exceção indicando "broken pipe". Não estou com o Stack Trace comigo agora, mas posso postá-lo mais tarde. Se alguém tiver idéia do que pode estar acontecendo me dêm uma ajuda.

Obrigado a todos,

Adriano Castro
http://www.enigmapremiado.com.br

Kenji

unread,
Sep 11, 2011, 1:10:58 AM9/11/11
to jav...@googlegroups.com

ricardo johannsen

unread,
Sep 12, 2011, 9:46:08 AM9/12/11
to jav...@googlegroups.com
Cara passe mal bocados e varias noites sem dormir por causa deste maldito erro!! bom sem mais delongas broken pipe é um erro que ocorre quando a conexão com o banco fica inativa por muito tempo e ele mesmo mata a conexão, as melhores soluções são vc usar o CP3PO como fala ai no blog da caelum ou então pegar uma conexão JNDI com o proprio servidor de aplicação(eu uso esta alternativa)

alguns links que podem ser uteis:

(Forma correta)

http://blog.camilolopes.com.br/solutionlinkhibernate/
http://netbeando.blogspot.com/2009/03/broken-pipe-solucao-correta.html
http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html
http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

(forma POG)

se nada disso der certo ,faz uma thead que dispara uma consulta simples ao banco  de tempos em tempos,é gambi braba mas nunca mais dá erro


Em 11 de setembro de 2011 02:10, Kenji <shi...@gmail.com> escreveu:
http://blog.caelum.com.br/a-java-net-socketexception-broken-pipe/

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Adriano 'Stanley'

unread,
Sep 12, 2011, 10:08:31 AM9/12/11
to jav...@googlegroups.com
Perfeito, Kenji, muito obrigado!

Adriano Castro
http://www.enigmapremiado.com.br

Adriano 'Stanley'

unread,
Sep 13, 2011, 10:56:58 PM9/13/11
to jav...@googlegroups.com
Então, pessoal, configurei o c3p0 da seguinte maneira:

No hibernate.cfg.xml:
<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_size">40</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">100</property>

No c3p0.properties:
c3p0.min_size=3
c3p0.max_size=40
c3p0.max_statements=400
c3p0.acquire_increment=3
c3p0.idle_test_period=180

c3p0.checkoutTimeout=0
c3p0.maxStatementsPerConnection=10
c3p0.acquireRetryDelay=1000
c3p0.acquireRetryAttempts=60
c3p0.maxIdleTimeExcessConnections=120
c3p0.numHelperThreads=6

c3p0.debugUnreturnedConnectionStackTraces=true
c3p0.unreturnedConnectionTimeout=60

Minha funcionalidade requer alguns poucos segundos para ser processada no servidor dependendo da quantidade de solicitações feitas (não há como reduzir esse tempo pois são rotinas às quais não temos acesso).

Basicamente está assim:

> Servidor abre uma conexão com o banco (HibernateUtil.openSession);
> Validações no banco;
> Chama o serviço que retorna com aproximadamente 20 segundos;
> Realiza alterações no banco;
> Faz o commit;

Localmente o serviço funciona, mas quando publica o stack trace é esse:

INFO: Exception when handling error trying to reset the response.
ClientAbortException:  java.net.SocketException: Broken pipe
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
    at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:309)
    at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:288)
    at org.apache.catalina.connector.Response.flushBuffer(Response.java:548)
    at org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java:279)
    at com.sun.faces.context.ExternalContextImpl.responseFlushBuffer(ExternalContextImpl.java:859)
    at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:268)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:320)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.render(PartialTraversalLifecycle.java:106)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:438)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:415)
    at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:270)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
    at java.lang.Thread.run(Thread.java:619)
Caused by: 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:136)
    at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:532)
    at org.apache.jk.common.JkInputStream.doWrite(JkInputStream.java:162)
    at org.apache.coyote.Response.doWrite(Response.java:560)
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
    ... 33 more

Adriano Castro
http://www.enigmapremiado.com.br
Reply all
Reply to author
Forward
0 new messages