[DÚVIDAS] Hibernate - C3P0

Gostaria de esclarecer algumas dúvidas minhas em relação a esse pool:

1 - Como tenho certeza que o C3P0 e suas propriedades estão funcionando?
2 - O que caracteriza a ocupação de um espaço na pool uma chamada ao banco ou uma sessão do hibernate aberta?

Essa última dúvida, na verdade são vários pontos que ainda não ficaram bem esclarecidos para mim:

3 - Fico gravando um formulário umas 100x para travar o servidor, o servidor fica pensando… pensando… e quando chega no tempo x do timeout lança exceção que excedeu o tempo limite:
se tenho o seguinte:

30
20

Quer dizer que de 20 em 20s eu vou verificar se existem conexões inativas, se existirem eu limpo…
E se essa demorar mais que 30s eu lanço a exceção do timeout. PORÉM NUNCA VAI CHEGAR NO TIMEOUT SE EU LIMPO EM 20s?

Obs: Antes eu estava com idle_test_period como 100 e timeout como 30, e quando cliquei no formulario para salvar direto deu erro. agora deixando em 20 não está dando (por enquanto) esse baixo valor pode afetar em algo na “vida” das conexões?

Editado:

4 - O meu problema é o seguinte quando tenho no c3p0.properties um timeout declarado, quando alguma conexão falha as demais vão se juntando na fila e o tempo de timeout estoura.Se eu não utilizo tempo de timeout a conexão fica “pensando” mas não me retorna mais nenhum resultado do banco.Tenho que reiniciar o tomcat para voltar a usar qualquer chamada ao banco.

Se eu conseguisse de x em x segundos limpar essas conexões que ficam pensando já me resolveria o problema mesmo que o usuário ficasse esses x segundos “parado”, e depois conseguisse chamar o banco normalmente, só que mesmo com o idle_test_period para 100 ( = 1min 40s? ) pode passar esse tempo que a conexão continua “pensando”… posso passar o dia aqui que continua tentando achar algo…

Estou passando pelo mesmo problema, alguém teria alguma idéia?

As conexões parecem não limpar, e em certo momento alguma operação fica aguardando por alguma conexão.

Eu resolvi aqui…

Eu não estava fechando as sessions.

O bloco de código para interagir com o banco fica ± o seguinte:

[code]try {

//abre sessão
//commita transação

} catch( Exception e) {

//alguma exceção… podem ter outros blocos catch para exceções específicas

} finally {

if ( session != null e session.ativa )
fechaSessao;

}[/code]

Use qualquer programa para ver o banco MySQL ( phpMyAdmin, HediSQL, … ) vai ter a lista de processos ali você consegue ver se as conexões ficaram abertas.
Use o HibernateProfiler para você verificar quais sessões ficaram abertas.

Com essas ferramentas dá para você resolver o problema tranquilamente :smiley:

Olá RafaelViana, boa tarde.

Estou com o mesmo problema, porém, utilizando o tomcat + jsf + hibernate…

Estou utilizando os modelos de hibernate da caelum (fj-21) e depois que eu coloquei o eclipse novo (indigo), comecei a perceber no console esse erro…

Não poderia ser problema de memória do eclipse sendo mal interpretado pelo mesmo? Porque consigo trabalhar normalmente aqui, apesar deste erro.

Vlw.

[quote=RafaelViana]Eu resolvi aqui…

Eu não estava fechando as sessions.

O bloco de código para interagir com o banco fica ± o seguinte:

[code]try {

//abre sessão
//commita transação

} catch( Exception e) {

//alguma exceção… podem ter outros blocos catch para exceções específicas

} finally {

if ( session != null e session.ativa )
fechaSessao;

}[/code]

Use qualquer programa para ver o banco MySQL ( phpMyAdmin, HediSQL, … ) vai ter a lista de processos ali você consegue ver se as conexões ficaram abertas.
Use o HibernateProfiler para você verificar quais sessões ficaram abertas.

Com essas ferramentas dá para você resolver o problema tranquilamente :D[/quote]