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=40c3p0.max_statements=400
c3p0.acquire_increment=3c3p0.idle_test_period=180
c3p0.checkoutTimeout=0c3p0.maxStatementsPerConnection=10
c3p0.acquireRetryDelay=1000c3p0.acquireRetryAttempts=60
c3p0.maxIdleTimeExcessConnections=120c3p0.numHelperThreads=6
c3p0.debugUnreturnedConnectionStackTraces=truec3p0.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 moreAdriano Castro
http://www.enigmapremiado.com.br