Gostaria de saber se devo utilizar um pool de conexões com o banco para cada página jsp acessada ou um pool para toda a navegação do site. Se for para toda a navegação como eu crio um objeto que possa ser utilizado por todas as páginas jsp? Posso utilizar session?
Rafael
ps: claro, depois de fazeer as varias configuracoes do datasource, fica mais simples
W
wendell_almeida_silv
“Rafael Steil”:
“richardpeder”:
Vc cria uma classe ConnectionPool e vai instanciando ela conforme sua necessidade!
ate mais…
Voce nao vai instanciando o pool, mas sim pegando e devolvendo objetos para o pool. Voce soh ira ter um unico objeto ConnectionPool em memoria.
Rafael
Como faço para ter um unico objeto ConnectionPool para todas as paginas jsp?
Rafael_Steil
Use um Singleton… Se nao souber o que eh um singleton, use o Pesquisar aqui do GUJ… ha varios topicos sobre o assunto…
E, por favor, nao faca um connection pool vc mesmo. Ha muitas boas solucoes ja prontas e eficientes por ai. Uma outra pesquisada no GUJ e vc tera respostas sobre Connection Pool tambem.
Rafael
cv1
Sim, inclusive os bilhoes de topicos que eu ja escrevi aqui dizendo que Singleton não presta. :evil:
[size=“7”]um dia eu ainda vou encher o rafael de porrada por causa disso…[/size]
Rafael_Steil
“cv”:
Sim, inclusive os bilhoes de topicos que eu ja escrevi aqui dizendo que Singleton não presta. :evil:
Ok…
entao nao use um singleton. use “static” onde bem entender e chame da *#Q&$ que quiser.
Rafael
cancao
“Rafael Steil”:
Depende do teu conceito de “melhor maneira”… Eu pessoalmente prefiro algo simples como
Pois é, mas vc teve que implementar esse “algo mais simples”, certo?! Melhor maneira para mim é ler a boa doc do Tomcat sobre o assunto e usar o DBCP já pronto!
O que vc usa no lugar do Singleton?
Até.
Rafael_Steil
Nao se usa singleton…
Criar instancias de objetos nas vm’s mais novas eh muito rapido, entao ter um objeto na forma de singleton pode ser mais lento que instanciar o objeto do zero, caso voce sincronize as chamadas.
Ha ainda o lance teorico de padroes de projeto, e ai entra o caso de usar metodos especificos declarados como static ao inves da classe inteira ser acessada atraves de getInstance()'s…
Se a tua configuração suportar um servidor de nomes/diretorio, via JNDI, é uma excelente maneira de resolver o problema do object lookup.
cv1
O problema de fazer lookup de objetos eh que vc quebra a inversao de controle. Usando um pouquinho de injecao de dependencias da pra deixar o codigo bem mais bonitinho, e sem factory e singleton esparramado pra todo lado
louds
Bom, injeção de dependencia tem seus problemas cv, como a obrigatoriedade de que TODOS objetos que possam vir a ter uma dependencia passem pelo container ou tenham acesso a ele para fazer lookup. Vou adorar se voce me mostrar o contrario; qual seria a forma elegante que evite o uso de singletons (p/ fast-lookup) ou um serviço de lookup e permita o uso ad hoc de serviços/componentes?
W
wendell_almeida_silv
“Rafael Steil”:
Nao se usa singleton…
Criar instancias de objetos nas vm’s mais novas eh muito rapido, entao ter um objeto na forma de singleton pode ser mais lento que instanciar o objeto do zero, caso voce sincronize as chamadas.
Ha ainda o lance teorico de padroes de projeto, e ai entra o caso de usar metodos especificos declarados como static ao inves da classe inteira ser acessada atraves de getInstance()'s…
try{InitialContextic=newInitialContext();dataSource=(DataSource)ic.lookup("java:comp/env/jdbc/bdxxx"); conexao = dataSource.getConnection();}catch (NamingException ex) { // DataSource não foi encontrada no JNDI; out.println("Ocorreuerronopooldeconexões:<br>"+ex.getMessage());}
tomcat 5.5.25
jdk 1.6.0
Kenobi
Bom, injeção de dependencia tem seus problemas cv, como a obrigatoriedade de que TODOS objetos que possam vir a ter uma dependencia passem pelo container ou tenham acesso a ele para fazer lookup. Vou adorar se voce me mostrar o contrario; qual seria a forma elegante que evite o uso de singletons (p/ fast-lookup) ou um serviço de lookup e permita o uso ad hoc de serviços/componentes?
Se você tiver fazendo usando a estrutura do EJB3 sim, entretanto se utilizar guice, spring entre outros; os objetos não precisam passar pelo container. Aliás, você pode fazer IoC de qualquer coisa, até vaquinhas verdes