estou tendo o seguinte problema: tenho uma aplicação que utiliza C3P0 e em uma das telas recebo seguinte erro:
17:53:45,201 ERROR JDBCExceptionReporter:78 - You can't operate on a closed Connection!!!
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.west.entidades.BairroDAO.listBairroByQuery(BairroDAO.java:82)
at org.west.componentes.ListModelFactory.getModelBairro(ListModelFactory.java:45)
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.swingBean.gui.wrappers.ArrayWrapper.setModel(ArrayWrapper.java:62)
at org.swingBean.gui.wrappers.ArrayWrapper.access$000(ArrayWrapper.java:21)
at org.swingBean.gui.wrappers.ArrayWrapper$1.run(ArrayWrapper.java:42)
Caused by: java.sql.SQLException: You can't operate on a closed Connection!!!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:222)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
... 16 more
Caused by: java.lang.NullPointerException
at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:186)
... 23 more
Exception in thread "Thread-18" org.swingBean.exception.ComponentExecutionException: Can't set list model
at org.swingBean.gui.wrappers.ArrayWrapper.setModel(ArrayWrapper.java:66)
at org.swingBean.gui.wrappers.ArrayWrapper.access$000(ArrayWrapper.java:21)
at org.swingBean.gui.wrappers.ArrayWrapper$1.run(ArrayWrapper.java:42)
Caused by: java.lang.reflect.InvocationTargetException
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.swingBean.gui.wrappers.ArrayWrapper.setModel(ArrayWrapper.java:62)
... 2 more
Caused by: java.lang.NullPointerException
at java.util.Arrays$ArrayList.<init>(Arrays.java:3357)
at java.util.Arrays.asList(Arrays.java:3343)
at org.west.componentes.ListModelFactory.getModelBairro(ListModelFactory.java:45)
... 7 more
Entretanto esse erro é esporádico, ele acontece algumas vezes e outras não, alguém sabe qual poderia ser a causa?
Eu só coloquei o C3P0 pq em outra tela do sistema, mesmo dando um session.clear(), ele não fazia busca novamente. Apenas para explicar: vários usuários estão conectados, o usuário A manda um mensagem via JMS, informando que o processo foi enviado para B, na tela do B ele recebe a mensagem com os dados do processo correto. Entretanto qdo o B atualiza a tela pra buscar os processos corretos o hibernate simplesmente me retorna a mesma coisa. Eu procurei na net e verifiquei q podia ser o poolprovider…
vlw