Gostaria de saber se é possível limitar o número de conexões em uma parte de uma aplicação e supondo que esta aplicação já utilize o pool do tomcat.
Tentarei explicar através de um exemplo:
Vamos supor que tenhamos 50 conexões ao banco disponíveis para um portal. Supondo que tenhamos que limitar a parte de busca - por exemplo - à no máximo 10 conexões, isto é possível utilizando o próprio pool do Tomcat? Em caso negativo, como isto poderia ser feito?? (eu teria que criar outro pool à parte??)
Não sei se é possível fazer isso diretamente no pool do tomcat.
(Assim que terminar de ler o livro sobre o funcionamento interno dele vou saber).
Uma solução seria implementar um Proxy do objeto JDBC Connection,
interceptá-lo, e limitar o número de conexões.
Poderia ser feito também usando cash de conexões e então você controlaria o acesso, limitando através de um hashtable.
Acredito que a saída mais simples seja você criar um dataSource com somente 10 conexões e um nome diferente do anterior e passar a buscar as conexões do formulário de busca desse dataSource. O problema é que não sei como isso iria impactar no padrão do seu projeto, mas não dá (até onde eu sei) para limitar o uso de um formulário a um dataSource pois ele não mantém registro de quais conexões podem ser atreladas a quais conexões.
O que você poderia fazer é um contador que ficasse guardando o número de conexões em uso no momento e isso gerasse uma espera até que essas conexões fossem sendo fechadas. Mas isso acho meio doido e um complicador a mais, pois nesse caso o que você teria que fazer é gerar uma fila e um consumidor de filas que se limita-se a consumir até 10 buscas simultaneamente. Só que gerenciador de fila não tem no tomcat, teria que usar o jBoss (se bem que talvez você precise, afinal, é um portal).