Boa tarde!
Bom eu estou com um problemão utilizando hibernate + c3p0 + blazeds + flex
sem o c3p0 roda normalmente, porém não tenho configurado um pool de conexões, ruim pois meu sistema vai ser limitado
porém quando configuro meu c3p0 e fazer muitas requisições ao banco rapidamente ele a seguinte exception
java.sql.SQLException: You can't operate on a closed Statement!!!
could not execute query
org.postgresql.util.PSQLException: Nenhum valor especificado para parâmetro 1.
org.hibernate.exception.DataException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2216)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
meu hibernate.cfg.xml
<session-factory>
<!--?autoReconnect=true-->
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost/db_geolog</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">XXX</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class"></property>
<!--<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>-->
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">50</property>
<property name="hibernate.c3p0.max_statements">20</property>
<property name="hibernate.c3p0.idle_test_period">50</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
minha classe de conexão é a seguinte (um singleton)
package br.com.geosapiens.igeolog.modelo.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class ConexaoDb {
private SessionFactory sessionFactory = null;
private Session sessao;
public static class Singleton
{
public static ConexaoDb conexao = new ConexaoDb();
}
public static ConexaoDb getInstance()
{
return ConexaoDb.Singleton.conexao;
}
private void construirSeNecessario() {
try {
if (sessionFactory == null) {
//Configuration configuration = new Configuration();
Configuration configuration = new AnnotationConfiguration();
configuration.configure("/br/com/geosapiens/igeolog/modelo/util/hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();
sessao = sessionFactory.openSession();
System.out.println("Factory criada");
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public Session openSession() {
construirSeNecessario();
try {
//return sessionFactory.getCurrentSession();
return sessao;
} catch (Exception Ex) {
System.err.println(Ex.getMessage());
//return sessionFactory.openSession();
return null;
}
}
public void close(Session session) {
if (session != null) {
try {
session.close();
} catch (HibernateException ex) {
System.err.println("Impossível fechar sessão: " + ex.getMessage());
}
}
}
public SessionFactory getFactory() {
construirSeNecessario();
return sessionFactory;
}
}
e como faço minhas requisições (um exemplo apenas)
public List<TipoSiteProxy> executeList() throws Exception{
try {
List<TipoSite> tiposSite = tipoSiteDao.findAll(Controle.getInstance().getUsuario().getEmpresa().copy());
List<TipoSiteProxy> tiposSiteProxy = new ArrayList<TipoSiteProxy>();
for(TipoSite tipo:tiposSite){
tiposSiteProxy.add(new TipoSiteProxy(tipo));
}
return tiposSiteProxy;
}catch (Exception ex){
System.out.println(ex.getMessage());
System.out.println(ex.getCause());
ex.printStackTrace();
Session teste = tipoSiteDao.getSession();
return null;
}
}
bom é só no list que esta dando esse erro por isso não postei o resto dos códigos
e como são umas 30 classes eu não postei o mapeamento
obrigado pela ajuda desde já
[/code]