Pool DBCP[RESOLVIDO]  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

laudenpower wrote:Então se eu configurei o pool para deixar pelo menos uma conexão aberta e essa conexão estourou o tempo de ociosidade a mesma é fechada de "verdade" pelo pool, enquanto isso ele mantém ela aberta?


Não me lembro se é o C3P0 ou o DBCP. Mas um deles abre uma nova conexão e então fecha a ociosa. Então, por um breve momento de tempo, vc tem uma conexão a mais. O outro mantém a conexão aberta.

O fato é que o número mínimo de conexões abertas sempre vai estar lá.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

Cara to quase desistindo desse carinha aqui...
Tipo eu setei o pool inicial para 10 conexões da seguinte forma:



Mas quando mando listar o número de conexões ativas ele lista apenas uma (a do meu dao), será que eu fiz alguma coisa errada?
Tipo quero usar essa api em um projeto que tenho aqui, mas se eu não tiver certeza de como fazer a coisa posso fazer 30 pessoas pararem de trabalhar de uma hora pra outra (alias já fiz isso uma vez e não é nada legal...)

ERRATA: Meu inglês não é tão bom quanto o do google translator... o correto é configurar o pool antes de chamar o getConnection()

This message was edited 1 time. Last update was at 23/09/2010 16:52:29


Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

A documentação diz justamente o contrário, que vc deve chamar o método antes de inicializar o pool.

Note: this method currently has no effect once the pool has been initialized. The pool is initialized the first time one of the following methods is invoked: getConnection, setLogwriter, setLoginTimeout, getLoginTimeout, getLogWriter.


Nota: Esse método atualmente não tem efeito uma vez que o pool tenha sido inicializado. O pool é inicializado pela primeira vez quando um dos seguintes métodos são invocados: getConnection, setLogwriter, setLoginTimeout, getLoginTimeout, getLogWriter

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

Bom depois dessa aula sobre pools segue o código:



Vinny se possível de uma olhada nos meus comentários nos métodos e se algo tiver erradome corrija caso contrário, faça uma pequena consideração final pra mim colocar resolvido no tópico.

Muito obrigado meu colega, me ajudasse muito e me coloco a disposição para poder um dia fazer o mesmo por você

Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Lembre-se de definir também o setMinIdle para 1.

Assim vc diz que obrigatoriamente deve haver uma conexão aberta.
O initial size é só o tamanho inicial. Se a conexão ficar ociosa, o banco pode fechar essa conexão.

Outras propriedades que talvez vc queira verificar é o setTestOnReturn. Ele precisa que vc use também o setValidationQuery. Coloque ali uma query ultra-simples, só para testar se o banco funciona. Algo como "SELECT 1" já serve.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

Segue o código corrigido pelo Vinny, espero que ajude muitas pessoas



Novamente agradeço pelo Vinny pela ajuda

Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
RodrigoValentim
Debugger

Membro desde: 20/04/2007 20:33:34
Mensagens: 57
Localização: Salvador / BA
Offline

laudenpower wrote:Segue o código corrigido pelo Vinny, espero que ajude muitas pessoas



Novamente agradeço pelo Vinny pela ajuda


laudenpower, Muito obrigado meu jovem... estou correndo atras desta solução tem tempo! vou tentar implementar...

só uma dúvida, essa classe pode ser usada em conjunto com o hibernate? como seria para passar a conexão para ele?

Abraço

Abraços,
Rodrigo Valentim
[MSN]
adilsonbad
What is classpath?

Membro desde: 31/03/2011 19:54:43
Mensagens: 9
Offline

Olá bom dia,

estou com problemas com o C3P0, rodo uma aplicação Java + Hibernate + Swing + Postgre num servidor windows server 2003, problema é que o sistema está abrindo conexões várias e não está elimiando as mesmas só quando o programa é fechado, que libera aquela conexão, nos metodos de consulta fiz sempre assim:



e no .properties está assim agora:



Será que alguém poderia me dar uma ajuda, ou um caminho para mim seguir.

Obrigado.
RodrigoValentim
Debugger

Membro desde: 20/04/2007 20:33:34
Mensagens: 57
Localização: Salvador / BA
Offline

Você não está abrindo várias conexões feito eu não? tipo, para cada usuário que loga no sistema, ao inves dele buscar a conexão no pool, ele abrir uma conexão com o usuário e senha propio dele? estava fazendo isso ao inves de usar a conexao do pool e por isos o meu nao estava funcionando.

Abraços,
Rodrigo Valentim
[MSN]
adilsonbad
What is classpath?

Membro desde: 31/03/2011 19:54:43
Mensagens: 9
Offline

Eu estou usando hibernate e com isso fiz uma classe chamada HibernateUtil como abaixo:



Em todos os metodos que faço consulta no BD eu chamo eles assim:



Eu chamo o HibernateUtil.getSession();

agora não sei se isso ele está pegando uma sessão, pq parece que ele está criando uma conexão.
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team