1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Conexão Hibernate não fecha (Pool de Conexão)

Tenho uma aplicação web, que pelo que me parece está com vazamento de memória.

Eu inicio a sessão, no entanto o hibernate não fecha, continua com a sessão aberta e vai abrindo mais a cada acesso que eu eu faço, até que o servidor é derrubado...estou utilizando um Pool de conexão, segue o código hibernate.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <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:5432/site_chavantes</property>
    <property name="hibernate.connection.username">****</property>
    <property name="hibernate.connection.password">****</property>

    <!--
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/camarach_micromap</property>
    <property name="hibernate.connection.username">*****</property>
    <property name="hibernate.connection.password">*****</property>
    -->
    <!---->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="show_sql">true</property>
    <property name="hibernate.format_sql">true</property>


    <!-- Connection Pool Config-->
    <property name="connection.pool_size">1</property> 
    <property name="current_session_context_class">thread</property>
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">300</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>

    <!-- Classes Mapeadas -->
    <!-- Modulo arquivos -->

    <mapping class="br.com.chavantes.arquivos.foto.vo.FotoVO"/>
    <mapping class="br.com.chavantes.arquivos.pdf.vo.PdfVO"/>
    <mapping class="br.com.chavantes.arquivos.album.vo.AlbumVO"/>
    <mapping class="br.com.chavantes.arquivos.noticia.vo.NoticiaVO"/>
    <!-- Modulo camara -->
    <mapping class="br.com.chavantes.camara.telefone.vo.TelefoneVO"/>
    <mapping class="br.com.chavantes.camara.vereadores.vo.VereadoresVO"/>
    <mapping class="br.com.chavantes.camara.faleconosco.vo.FaleConoscoVO"/>
    <mapping class="br.com.chavantes.camara.tvcamara.vo.TvCamaraVO"/>
    <mapping class="br.com.chavantes.camara.agenda.vo.AgendaVO"/>
    <mapping class="br.com.chavantes.camara.endereco.vo.EnderecoVO"/>
    <mapping class="br.com.chavantes.camara.camara.vo.CamaraVO"/>
    <mapping class="br.com.chavantes.camara.usuario.vo.UsuarioVO"/>
  </session-factory>
</hibernate-configuration>

Segue um método com o getSession...

    public List<TvCamaraVO> listaOrdenadaTV() {

        Session sessao = null;
        List<TvCamaraVO> listaTv = new ArrayList<TvCamaraVO>();
        try {
            sessao = getSessionFactory().openSession();

            Criteria criteria = sessao.createCriteria(TvCamaraVO.class);
            criteria = criteria.addOrder(Order.desc("data"));

            if (criteria.list().isEmpty()) {
                System.out.println("Ususario null");
            } else {
                System.out.println("AXOUUUU!!!!!");
                listaTv = criteria.list();
            }

            return listaTv;
        } catch (Exception e) {
            System.out.println(e.toString());
        } finally {
            sessao.close();
        }
        return listaTv;

    }
  • como está o seu getSession?

    Demys Cota   17 de jun de 2013
  • demys costa, editei a pergunta e inseri um método com o getSession, todos estão nesse modelo...

    Bruno Ramos   18 de jun de 2013
  • no getSessionFactory() vc está configurando o annotationConfiguration?

    Demys Cota   18 de jun de 2013
  • Não cara, nem sabia disso, não tenho ideia de como faz...rs

    Bruno Ramos   18 de jun de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate memória ou faça a sua própria pergunta.