Hibernate: Connection Pool excedido, help!  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline



Pessoal tenho uma aplicação spring + hibernate + jsf, onde depois de umas 10 chamadas o tomcat me gera este erro dizendo que o pool de conexão esgotou, e o postgresql diz ter muitos usuários conectados.....

uso o spring para gerenciar o hibernate, e o jndi que utilizo já alterei parâmetros mas nao adianta..
já alterei isso:


agora aqui: diz tamanho de 20, mas nao especifiquei, seria no caso o padrão como altero....

mas minha dúvida é: se somente eu estou usando a aplicação, porque ele está excedendo, no caso o spring ta falhando



vlw

SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Primeiro, você não está usando um pool, o hibernate está carregando o DriverManagerConnectionProvider, e segundo, esse erro acontece quando você esquece de fechar as conexões.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

Maurício Linhares wrote:Primeiro, você não está usando um pool, o hibernate está carregando o DriverManagerConnectionProvider, e segundo, esse erro acontece quando você esquece de fechar as conexões.


mas sobre as conexões, por exemplo um método de minha DAO:


por exemplo em todas eu uso sempre o em.flush(); isso não seria o suficiente...

SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Não, você tem que dar close em todas elas, oras.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

Maurício Linhares wrote:Não, você tem que dar close em todas elas, oras.


achei que o spring faria isso... achei que a parte que está configurada pro EntityManager incluia ele fechar...

quanto ao flush() pensei um e falei outro, eu ia dizer close() mesmo, porém não eu fazendo e sim o spring, pois até então eu achei que ele estaria realizando isso...
mesmo eu não colocando explicitamente, minha concepção é de que o spring fazia o em.close(), pois ele que está gerenciando a Manager...

SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Javabuntu wrote:quanto ao flush() pensei um e falei outro, eu ia dizer close() mesmo, porém não eu fazendo e sim o spring, pois até então eu achei que ele estaria realizando isso...
mesmo eu não colocando explicitamente, minha concepção é de que o spring fazia o em.close(), pois ele que está gerenciando a Manager...


Ele tá gerenciando o que? Você definiu o controle de transações? Configurou aonde? Tem o filtro de requisições configurado?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

está configurado isso no applicationContext:


e estes dois listener pra poder tratar minhas requisições no jsf......

e este correspondente no faces-config:


SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Até onde eu sei, isso não é o suficiente, você tem que configurar o OpenEntitymanagerInViewFilter (assim como agente configurada o do Hibernate) -> http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/orm/jpa/support/OpenEntityManagerInViewFilter.html

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
agodinhost
Virtual Machine Man
[Avatar]

Membro desde: 28/03/2006 21:19:16
Mensagens: 590
Localização: RJ, Tijuca
Offline

Maurício Linhares wrote:Não, você tem que dar close em todas elas, oras.

desculpe a ignorância, mas vc quer dizer "fechar as conexões" utilizando o EntityManager (em) certo? até onde sei, na verdade, não estamos realmente fechando as conexões, mas sim informando ao EntityManager que não precisamos mais delas (se fechássemos realmente as conexões não haveria o porquê do pool).

Me corrijam se estiver errado.

Woody

"The difference between theory and practice is that, in theory, there is no difference between theory and practice".
[WWW] [MSN]
mateusprado
JavaEvangelist
[Avatar]

Membro desde: 26/02/2008 07:20:38
Mensagens: 412
Localização: Araraquara, SP
Offline

agodinhost wrote:
Maurício Linhares wrote:Não, você tem que dar close em todas elas, oras.

desculpe a ignorância, mas vc quer dizer "fechar as conexões" utilizando o EntityManager (em) certo? até onde sei, na verdade, não estamos realmente fechando as conexões, mas sim informando ao EntityManager que não precisamos mais delas (se fechássemos realmente as conexões não haveria o porquê do pool).

Me corrijam se estiver errado.

Woody


Voce esta certo! Apartir do momento que usamos um pool de conexão, ou seja quem ira gerenciar nossas conexoes, não precisamos mais nos "preocupar com fechar uma conexão que nao esta sendo utilizadas. Verdadeiros pools de conexoes, c3p0 por exemplo, possui um parametro,

que verifica de tempos em tempos na quela thread quais conexoes realmente esta e nao sendo usadas e as mata se necessario.
Isso pensando por um lado pode ser muito bom, mas por outro devemos pensar bem ao usa-lo.


[ ]s,

Mateus Prado


Caelum Stella

SCJP - Sun Certified Java Programmer
SCWCD - Sun Certified Web Component Developer
[WWW] [MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team