Finalizar conexões - C3P0 + Hibernate

2 respostas
rafa120

Olá pessoal.

Estou desenvolvendo uma aplicação usando jsf2, hibernate, primefaces com glassfish. Em um primeiro instante ela funciona normalmente, porém, depois de executar algumas tarefas na aplicação ela simplesmente para de responder, o browser fica lá aguardando uma resposta do server.

Fazendo os testes aqui, percebi que removendo a opção do C3P0 “hibernate.c3p0.max_size” resolveu o problema. Mas nao quero remover esta opção e estou aqui buscando como matar as conexoes depois de algum tempo. Ja tentei vários e nao consegui…alguma dica?

E também estou utilizando ViewScoped nos Beans, somente um está como SessionScoped

@Override
    public Changes buscarPorId(Integer id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (Changes) session.load(Changes.class, id);
    }
<property name="hibernate.connection.provider_class">
    org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.timeout">30</property> 
<property name="hibernate.c3p0.maxIdleTimeExcessConnections">10</property> 
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.unreturnedConnectionTimeout">30</property>
<property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces">true</property>

2 Respostas

igomes

Voce abre a session, porque não fecha a mesma ?, tudo bem que vc limita min 1/max 30, timeout blabla.
Mas toda vez que vc terminar de usar recurso vc o fecha, simples.

rafa120

Tenho este tambem

@Override
    public List<Changes> buscarTodos() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return session.createQuery("from Changes WHERE status='Open' ORDER BY start_date, end_date ASC").list();       
    }

Tentei mudar, colocando um session.close, mas na hora que abre a pagina ele tenta fazer a busca e emite o erro:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

@Override
    public List<Changes> buscarTodos(){
        List<Changes> listado1 = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        String sql = "from Changes WHERE status='Open' ORDER BY start_date, end_date ASC";
        try {
            listado1 =  session.createQuery(sql).list();
        } catch (Exception e) {
            System.out.println("Erro ao buscarTodos: " +e.getMessage());
        } finally {
            session.close(); 
        }
        return listado1;
Criado 7 de março de 2016
Ultima resposta 7 de mar. de 2016
Respostas 2
Participantes 2