Datasource + tomcat + postgres

Olá amigos,

Estou com problemas no datasource, se eu configurar da seguinte forma abaixo a conexão fica estabelecida com 8 horas

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="ROOT" path="/" reloadable="true"> <Resource name="jdbc/seiweb_jndi" auth="Container" type="javax.sql.DataSource" username="zenas" password="123456" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/banco" maxActive="20" maxIdle="10" validationquery="select 1" /> </Context>

Se eu configurar dessa outra forma, a conexão fica estabelecida num periodo de 2 dias a meio

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="ROOT" path="/" reloadable="true"> <Resource auth="Container" name="jdbc/seiweb_jndi" driverClassName="org.postgresql.Driver" maxActive="60" maxIdle="30" maxWait="-1" username="zenas" password="123456" type="javax.sql.DataSource" url="jdbc:postgresql://localhost:5432/banco" validationquery="SELECT 1" testonborrow="true" testwhileidle="true" timebetweenevictionrunsmillis="10000" minevictableidletimemillis="60000" /> </Context>

Vocês tem alguma dica para o problema de fechamento de conexão, estou me baseando no link abaixo e hospedei um sistema em um provedor pago

http://confluence.atlassian.com/display/DOC/Configuring+a+PostgreSQL+Datasource+in+Apache+Tomcat

Agradeço a todos que puderem me ajudar.

Abraços

Qual é o cenário problemático :?: :?: :?:

Ocorre o erro descrito abaixo:

EVERE: org.hibernate.exception.GenericJDBCException: Cannot release connection javax.faces.el.EvaluationException: org.hibernate.exception.GenericJDBCException: Cannot release connection at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) at javax.faces.component.UICommand.broadcast(UICommand.java:311) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at br.com.zenas.filter.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:26) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 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:776) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:662) Caused by: org.hibernate.exception.GenericJDBCException: Cannot release connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:478) at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:408) at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:347) at org.hibernate.impl.SessionImpl.close(SessionImpl.java:325) at br.com.zenas.util.HibernateUtil.closeSession(HibernateUtil.java:140) at br.com.zenas.business.LoginBusiness.verificarUsuarioLogado(LoginBusiness.java:39) at br.com.zenas.controller.LoginBean.efetuarLogin(LoginBean.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84) ... 26 more Caused by: java.sql.SQLException: Already closed. at org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:114) at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:191) at org.hibernate.connection.DatasourceConnectionProvider.closeConnection(DatasourceConnectionProvider.java:97) at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:474) ... 40 more Sep 27, 2011 9:46:06 AM com.sun.faces.lifecycle.InvokeApplicationPhase execute WARNING: #{loginBean.efetuarLogin}: org.hibernate.exception.GenericJDBCException: Cannot release connection javax.faces.FacesException: #{loginBean.efetuarLogin}: org.hibernate.exception.GenericJDBCException: Cannot release connection Caused by: org.hibernate.exception.GenericJDBCException: Cannot release connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:478) at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:408) at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:347) at org.hibernate.impl.SessionImpl.close(SessionImpl.java:325) at br.com.zenas.util.HibernateUtil.closeSession(HibernateUtil.java:140) at br.com.zenas.business.LoginBusiness.verificarUsuarioLogado(LoginBusiness.java:39) at br.com.zenas.controller.LoginBean.efetuarLogin(LoginBean.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84) ... 26 more Caused by: java.sql.SQLException: Already closed. at org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:114) at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:191) at org.hibernate.connection.DatasourceConnectionProvider.closeConnection(DatasourceConnectionProvider.java:97) at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:474) ... 40 more

Abraços

Eu ainda não entendi…mas vai a dica…
Seu erro é pq vc ta fechando uma conexão que já esta fechada…independente de como esta configurado seu pool…

Olá Amigos,

Consegui resolver o problema, a configuração ideal que não cai a conexão do datasource no tomcat de jeito nenhum é a descrita abaixo:

O que me impressiona é que essa configuração não está descrita no site oficial do apache e sim nesse link http://forum.locaweb.com.br/showthread.php?t=838

Abraços a todos.

Eu acho que isso deve ser uma particularidade do seu provedor de JDBC, pq ja usei configurações POOL no tomcat totalmente diferente do que vc postou e nunca caiu nenhuma conexão.

Olá irmão,

É verdade, pode ser isso mesmo, no meu caso, eu utilizo o provedor integrator, com 128 MB de memória compartilhada, essa configuração do datasource erá a configuração do localweb, mas é legal colocar essa configuração aqui no site, pois tem 3 tipos diferente de configuração e só a ultima funcionou pra mim.
Eu tb utilizo o plano 2 + a memoria compartilhada que custa R$ 35,00 mensal do site integrator.
Agora, a dica que você colocou [Eu ainda não entendi…mas vai a dica…
Seu erro é pq vc ta fechando uma conexão que já esta fechada…independente de como esta configurado seu pool… ] foi valida, eu estava dando mole realmente no meu framework, mas mesmo com a alteração que fiz continuo dando o erro no meu datasource, só eu utilizando a configuração do localweb foi que resolveu o meu problema.

Abraço a todos.