Connection Pool Assíncrona  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
dukejeffrie
Virtual Machine Man
[Avatar]

Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline

O pessoal pediu pra eu explicar que coisa é essa com esse nome doido que eu fiz.

Bom, aqui vai a história. Pra falar com um banco de dados de qualidade duvidosa eu usava um objeto só, e todos os acessos ao banco eram feitos através desse objeto (o bom e velho DBAdapter).

Enquanto era só pra testes, eu tinha aquela variável "Connection conn" e criava todos os statements através dela. Mas quando o servidor começou a rodar por dias e dias, o banco caía e eu não podia fazer nada além de restartar meu servidorzinho. Então quis que ele fosse esperto para resgatar a conexão perdida.

Eu já tinha tido contato com o ConnectionPool do Jakarta, mas a documentação daquele negócio é horrível. Então pensei em fazer meu próprio pool.

Só que o Caché (ops, falei o nome do banco), quando dá pau, não fecha a connection. eu tinha um trecho assim:


Que não funcionava. Para testar se a conexão ainda estava válida, eu precisava fazer:


Mas nessa altura, eu já tinha um pool de conexões: uma ArrayList normal, em que eu inseria as conexões por um lado e pegava por outro. Os blocos acima faziam parte do meu método releaseConnection(Connection conn).

Só que os borrows (pra pegar a conexao) e releases (pra soltá-las) aconteciam sempre numa chamada RMI: o cliente ficava esperando eu fazer toda essa palhaçada até o método retornar. Então achei por bem devolver as conexões para o Pool assincronamente, isto é, em outra thread.

Aqui vai o código do método (não se preocupem em entender tudo):


Tipo, eu tenho um "devolvedor de connections" que roda em uma thread nova. Ainda não é o ideal, mas me serve, ganhei um tempinho no retorno de cada método.

Bom, é isso. Alguém tem comentários?? : )))
[]s
[Email] [WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team