Hibernate - Configuração DBCP

2 respostas
V

Olá,

Utilizo Hibernate versão 3.0.5 e estou com sérios problemas quanto a pool de conexões DBCP utilizando PostGre. Após um certo tempo, minha aplicação lança Exceções “Connection is closed”, não encontrando mais conexões ativas, sendo preciso reiniciar o Tomcat. Tenho um DataSource configurado conforme abaixo.
Bom, alguém pode me ajudar, por favor?

agradeço desde já,
Vladmir

<Resource name=“jdbc/ecocentro2” auth=“Container” type=“javax.sql.DataSource” factory=“org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory” username=“XXXXX” password=“XXXXX” driverClassName=“org.postgresql.Driver” url=“X1” maxActive=“8” maxIdle=“8” maxWait=“10000” removeAbandoned=“true” removeAbandonedTimeout=“15” logAbandoned=“true” />

<Realm className=“org.apache.catalina.realm.DataSourceRealm” dataSourceName=“jdbc/X1” localDataSource=“true” userTable=“ca_usuario_pessoa” userNameCol=“nomelogin” userCredCol=“senha” userRoleTable=“ca_usuario_role” roleNameCol=“roleid” debug=“99”/>

Caused by: java.sql.SQLException: Connection is closed.

at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:291)

at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:241)

at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getAutoCommit(PoolingDataSource.java:221)

at org.hibernate.jdbc.ConnectionManager.isAutoCommit(ConnectionManager.java:128)

at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:328)
DBCP object created 2007-04-14 06:51:01 by the following code was never closed:

java.lang.Exception

at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.setStackTrace(AbandonedTrace.java:157)

at org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:76)

at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)

at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)

at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59)

at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:298)

at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:110)

at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:88)

at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1162)

at org.hibernate.loader.Loader.doQuery(Loader.java:390)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)

at org.hibernate.loader.Loader.doList(Loader.java:1593)

at org.hibernate.loader.Loader.list(Loader.java:1577)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)

at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)

at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)

at org.ecocentro.seguranca.dao.UsuarioDAO.todasRoles(UsuarioDAO.java:94)

at org.ecocentro.facade.EcocentroFachada.buscaTodasRoles(EcocentroFachada.java:141)

at org.ecocentro.cadastro.visao.PessoaForm.setRequestRoles(PessoaForm.java:160)

at org.apache.jsp.WEB_002dINF.jsp.cadastro.novo_005fcadastro_005fusuario_jsp._jspService(novo_005fcadastro_005fusuario_jsp.java:147)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)

at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:614)

at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)

at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)

at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)

at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)

at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)

at org.apache.jsp.WEB_002dINF.jsp.tile.principal_jsp._jspx_meth_tiles_insert_1(principal_jsp.java:267)

at org.apache.jsp.WEB_002dINF.jsp.tile.principal_jsp._jspService(principal_jsp.java:130)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)

at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1209)

at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)

at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)

at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:237)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1195)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:415)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.ecocentro.seguranca.controle.AutorizacaoFilter.doFilter(AutorizacaoFilter.java:111)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at br.com.locaweb.tomcat.LocaWebValve.invoke(LocaWebValve.java:101)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)

at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754)

at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684)

at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Thread.java:595)

2 Respostas

M

Tente usar assim:

&lt;Resource name=&quot;jdbc/MyDataSource&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot; driverClassName=&quot;org.postgresql.Driver&quot; url=&quot;jdbc&#58;postgresql&#58;//localhost&#58;5432/database&quot; username=&quot;user&quot; password=&quot;pass&quot; maxActive=&quot;20&quot; maxIdle=&quot;10&quot; maxWait=&quot;-1&quot;/&gt;

acho que resolve um pouco.

V

Ae Marcos,

a Locaweb aceita no máximo a seguinte configuração: maxActive=“8” maxIdle=“8”…

Mas resolvi o problema de outra forma, retirando da sessão criada hibernate o método setFlushMode(FlushMode.COMMIT) e deu certo. Este método leva os objetos para memória e apenas quando invocado algo com “commit” era feita a sincronização com o banco de dados. Infelizmente temos que nos adaptar a esses planos de hospedagens.

Obrigado pela atenção
Vladmir

Criado 15 de abril de 2007
Ultima resposta 17 de abr. de 2007
Respostas 2
Participantes 2