estou desenvolvendo uma aplicação client/server e estou com uma duvida como implementar um pool de conexões. como vou saber qual a conexão estará livre para usar e etc. Estou querendo fazer com o padrão singleton.
A ideia basica de um pool eh voce criar “n” objetos de uma unica vez e colocar em algum tipo de lista. Toda vez que for necessario um objeto, voce verifica se ha algum disponivel na lista. Se tiver, voce remove ( ou seta uma flag dizendo que o objeto esta em uso ) e retorna o mesmo.
Quando o uso nao for mais necessario, voce coloca de volta na lista.
A ideia eh bem simples, porem a implementacao pode ser um tanto trabalhosa, pois fatores como concorrencia ( multiplos threads ) entram em cena, o que exige um conhecimento bem avancado para programar corretamente.
Depois, as boas praticas dizem que o melhor eh usar algum componente ja consolidado e robusto, ao inves de tentar sair reinventando a toda toda hora. Com base nisso, sugiro que voce use o DBCP do grupo Jakarta, o qual fornece uma implementacao de connection pool muito boa.