Pessoal, mais uma vez estou aqui com minhas dúvidas sobre pool de conexões…
Minha dúvida agora é mais conceitual: Pelo que entendi, o pool não cria N conexões com o banco, na verdade cria somente UMA conexão que é compartilhada por todas as conexões do pool, as quais nào são conexões “verdadeiras”, apenas algum tipo de referência à conexão real.
O pool cria um conjunto de conexões e compartilha elas entre os clientes do pool (quem está pedindo as conexões), normalmente eles tem uma configuração onde você define o tamanho mínimo e o tamanho máximo do pool.
[quote=Maurício Linhares]Mas Gandalf, onde ficou a sua sabedoria?
Brincadeira
O pool cria um conjunto de conexões e compartilha elas entre os clientes do pool (quem está pedindo as conexões), normalmente eles tem uma configuração onde você define o tamanho mínimo e o tamanho máximo do pool.[/quote]
Ainda sou Gandalf, o Cinza. Ainda não me tornei Gandalf, o Branco, mas estou estudando para isso
É que criei um ConnectionPool aqui usando o DBCP do Jakarta e fiz um Servlet teste aqui que cria várias conexões em um for e imprime quantas estão abertas no console… não fechei as conexões de propósito, para testar o seguinte:
No shell, fiz: (meu banco é postgresql)
ps aux | grep postgres
E mostra apenas UMA conexão vinda do IP da minha máquina. Por isso fiz a pergunta acima…
Coloque a propriedade “minIdle” do BasicDataSource pra 5 e na hora de executar chame os métodos “getNumActive()” e “getNumIdle()” pra ver quantas conexões ele está realmente mantendo.
Eu fiz quase isso que vc falou, faltou apenas setar o minIdle. agora sim dá pra ver várias conexões. Meu minIdle não estava inicializado então acho que ele fechava todas as conexões, não deixava nenhuma como idle…