[Resolvido]Jboss log: Closing a result set you left open! Please close it yourself

9 respostas
Z

Ola pessoal,

Alguem ja teve essa mensagem no Jboss ?

WARN[20 Feb 2008 08:01:00,107] - Closing a result set you left open! Please close it yourself. java.lang.Throwable: STACKTRACE at java.lang.Throwable.<init>(Throwable.java:56) at java.lang.Throwable.<init>(Throwable.java:67) at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:617) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:237) at dao.ProdDAO.getIdProd(ProdDAO.java:1504) at dao.ProdDAO.getListaProd(ProdDAO.java:73) at dao.ProdDAO.getListaProd(ProdDAO.java:1015) at action.ProdAction.buscarProd(ProdAction.java:1032) at action.ProdAction.buscarProdutos(ProdAction.java:1082) at sun.reflect.GeneratedMethodAccessor291.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 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.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 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:767)

Ja foi verificado e a aplicacao esta dando o close em todos os objetos de conexao ( Connection, PreparedStatement, ResultSet )

9 Respostas

C

Tive esse erro uma vez com o Derby e resolvi, mas não entendi muito bem como. Tava dando esse erro pq era retornado um ResultSet e não tava vindo dados nele. Tenta fazer vir alguns registros pra ver se funciona.
Abraço!

P

Já vi também, mas associada a uma exceção anterior. Não será este seu caso ?

De qq forma, o stack trace corresponde ao momento em que a conexão foi “entregue” ao seu código. Deve ser fácil achar o caminho daí para frente.

Z

cristianomariano:
Tive esse erro uma vez com o Derby e resolvi, mas não entendi muito bem como. Tava dando esse erro pq era retornado um ResultSet e não tava vindo dados nele. Tenta fazer vir alguns registros pra ver se funciona.
Abraço!

Entao, as conexoes vem do pool do Jboss. No caso do seu select sua query nao retornava nada ? Como voce resolveu esse problema ?

psevestre:
Já vi também, mas associada a uma exceção anterior. Não será este seu caso ?

De qq forma, o stack trace corresponde ao momento em que a conexão foi “entregue” ao seu código. Deve ser fácil achar o caminho daí para frente.

Mas o problema e que exatamente no metodo que diz nao estar fechando o result set foi verificado que esta fechando. Nao sei se entendi direito o que voce quis dizer

P


Mas o problema e que exatament.

e no metodo que diz nao estar fechando o result set foi verificado que esta fechando. Nao sei se entendi direito o que voce quis dizer

Com finally ?

Um erro comum é fechar apenas no caminho “normal” de execução. Se o código lançar uma exceção antes de chegar no close(), haverá o “vazamento” de um resultset ou conexão dependendo do caso.

Na dúvida, feche tudo em um finally.

Z

psevestre:

Com finally ?

Um erro comum é fechar apenas no caminho “normal” de execução. Se o código lançar uma exceção antes de chegar no close(), haverá o “vazamento” de um resultset ou conexão dependendo do caso.

Na dúvida, feche tudo em um finally.

Correto, sempre fecho no finally

J

Normalmente esse erro é lançado por causa de alguma outra exception que ocorreu.
Vc tem certeza que não tem nenhum outro erro no console?

[]´s

Z

Problema resolvido:

O PreparedStatement, em alguns casos, estava sendo fechado antes do ResultSet.

Porém, vendo o doc da API vi que quando o PreparedStatement e fechado ele fecha implicitamente o ResultSet. E quando tentava fechar o RS logo abaixo nao surtia efeito

E isso que aconteceu, o JBoss nao reconhecia que o ResultSet estava sendo fechado, quando o PreparedStatement o fazia.

:thumbup:

M

Que tal você prestar uma caridade a comunidade e cadastrar esse bug lá no issue tracker do JBoss?

http://jira.jboss.org/jira/browse/JBTM

Z

Maurício Linhares:
Que tal você prestar uma caridade a comunidade e cadastrar esse bug lá no issue tracker do JBoss?

http://jira.jboss.org/jira/browse/JBTM

Feito
http://jira.jboss.org/jira/browse/JBAS-5303

Criado 26 de fevereiro de 2008
Ultima resposta 10 de mar. de 2008
Respostas 9
Participantes 5