Connection Pool para JDBC  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

Fiz um pool SIMPLERRIMO, e os dois metodos principais sao o getConnection e o releaseConnection.

Fiz testes concorrentes, com 3 threads de 800 queries cada. Mas voce sabe como eh, teste de concorrencia pode passar batido, e um dia da pau. Alguem me ajuda a achar algo?

Pra deixar claro, releaseSignal eh apenas um mutexiznho. connections guarda as conexoes do pool atual, e allConections guarda todas, as usadas e nao usadas.


http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

entao paulo, o codigo nao parece ter coisas erradas....
o seu metodo de devolver uma connection nao checa se a connection faz parte da sua pool ou nao, o q pode acontecer:
alguem fazer uma conexao de outra maneira (ou mesmo com uma outra connection pool) e devolver, por erro, para a tua connection pool, isto eh: sua conection pool vai ficar com uma conexao errada la dentro e pode devolver ela pra alguem que nao quer uma conexao errada.
Sem contar que se alguem fizer isso (por erro o umaldade pra dar o bug do teu codigo) vc podera acabar tendo uma connection pool com mais connections q o maxconnections ja que ele nao eh testado na hora de devolver.

Pra resolver isso eh manter uma pilha de connections livres e outra de connections usados. Quando um usado eh devolvido, voce verifica se ele esta na de usados, se estiver, retira e joga na de nao usados.


Outra coisa, pra fazer um teste serio, cria uma servlet q faz as 800 queries e cria um html com 2 elevado a 64 frames (facil de fazer) que abre a servlet..... e faz a conta de quantos queries estarao sendo feitos....

Foi assim q testei meu codigo

Gui

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

É verdade.
Mas basta dar um if(allConnections.contains()) antes de adiconar na pool novamente, ou soltou uma excecao.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
b.ambrozio
HelloWorld

Membro desde: 16/06/2009 14:46:07
Mensagens: 10
Localização: Brasil - São Paulo / SP
Offline

rs.. Sei que este post é bem velhinho, mas você tem este código completo?
É exatamente o que estou precisando neste momento, um connection pool simples, sem dependencias...

Não entenidi a parte do releaseConnection()

Abraço!
[MSN]
pedroabs
Debugger
[Avatar]

Membro desde: 08/12/2008 13:33:12
Mensagens: 62
Localização: São Paulo
Offline

Implementei a minha Connection Pool:

http://pedroabs.wordpress.com/2011/09/27/connection-pool-em-java-pool-de-conexoes/

MCP - VB6
SCJP / OCJP 6
-----------------------------
pedroabs.wordpress.com
http://twitter.com/pedroabs
[WWW]
saoj
JWizard
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline



Ficou bom, parabéns! Vou testar quando tiver um tempo.

Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team