Limitar número de conexões à uma parte da aplicação

Boa tarde pessoal!

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??)

Espero ter conseguido explicar a situação.
Att,

        Sokoban

Olá.

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.

vale lembrar que realizar Proxy tem um custo, e é necessário analisar o desempenho da sua aplicação.

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).

abraços,

otávio

Como falei,

Se você precisa de um único datasource, pode tentar usar a técnica que descrevi.

Não é necessário usar JBoss para isso.

A outra solução que nosso colega falou, usando 2 datasources,
inicialmente parece mais simples para o seu caso.