[RESOLVIDO] Erro ao utilizar C3P0

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

Oq está acontecendo nessa linha aqui?
ListModelFactory.java:45

Você está tomando um NullPointer aí.

at org.west.componentes.ListModelFactory.getModelBairro

está sendo retornado nulo na hora de se comunicar com o banco… ou seja…o modelBairro está sendo nulo

Esse método simplesmente recupera os itens do model. O estranho é que quando retiro as configurações do C3P0 ele simplesmente não dá erro. E se olharmos com mais atenção o stacktrace podemos perceber que na realidade o NullPointerException é causado pela linha:

Caused by: java.lang.NullPointerException  
    at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:186)  
    ... 23 more 

E nesse método,org.west.componentes.ListModelFactory.getModelBairro, se eu coloco quaisquer outras coisas no model ao invés de buscar no banco, tem vezes que não dá erro e tem vezes que dá erro em outra parte do código que tenta acessar o banco de dados. Ao que parece não estou conseguindo configurar o C3P0 adequadamente.Segue as propriedades no meu hibernate.cfg:

        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquire_increment">1</property>
        <property name="hibernate.c3p0.idle_test_period">0</property>
        <property name="hibernate.c3p0.min_size">1</property>
        <property name="hibernate.c3p0.max_size">15</property>
        <property name="hibernate.c3p0.timeout">10</property>
 Outra coisa que percebi é que caso um usuário altere alguma informação do banco de dados, mesmo que a sessão seja limpa, com o session.clear(), no outro usuário ele simplesmente não consegue ver essa mudança. Tipo assim: eu tenho um lançamento de nome "Entrada" no valor de "200". Se um usuário A muda para "300" mesmo com o session.clear(), o usuário B só consegue perceber a mudança se ele fechar o sistema!

Ao que parece era incompatibilidade de versões já que removi o hibernate 3 e coloquei o 4 e funcionou beleza.

Quanto ao outro problema não consegui resolver e tb naum sei bem por onde começar vou fechar esse post e abrir outro.