Conexões - Isto é possível?

7 respostas
Sokoban

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

7 Respostas

T

Acho mais fácil criar um segundo pool e usá-lo na parte da sua aplicação que pode usar no máximo 10 conexões.

Sokoban

Opa, fala thingo!
Bom, o problema é que na verdade eu já estou usando o pool do Tomcat, então eu teria que criar um pool na mão mesmo.

Eu queria que implementar um pool na mão fosse a ùltima opção, mas se nao tiver outro jeito…Ainda tenho a opção de usar o pool do OJB. Será que utilizando ele, aliado ao pool do Tomcat eu consigo isso?

R

Mas você pode criar mais de um pool de conexões no próprio Tomcat…

Acho que foi isso que o Thingol quis dizer.

Sokoban

Nossa, é mesmo??? Não sabia que isso era possível!
Tem certeza?
Em todos os casos vou dar uma pesquisada para saber…se eu descobrir alguma coisa posto aqui no forum
Abraços!

ps.: Se alguem souber pode postar tambem!

davidbuzatto

É só entrar na aplicação admin do tomcat (se num tiver ela instalada é só ir no site do tomcat pegar e instalar no tomcat) e configurar os data soures. Caso vc num tenha a aplicação vc pode editar o server.xml e adicionar o seguinte

Dentro de GlobalNamingResources
<Resource
      name="NomeDoDataSource"
      type="javax.sql.DataSource"
      password="suaSenha"
      driverClassName="com.mysql.jdbc.Driver" // usa o driver q vc precisa
      maxIdle="0" // máximo de conexões paradas, 0 = sem limites
      maxWait="5000" // tempo de espera
      username="seuNomeDeUsuario"
      url="jdbc:mysql://localhost/seu banco" // o caminho q vc precisa
      maxActive="0" // máximo de conexões ativas, 0 = sem limites
/>

Ai para acessar dentro dos jsp's v mapeia no web.xml esse data source q vc criou. tem que ter o mesmo nome do data source q vc criou.

<resource-ref>
        <res-ref-name>NomeDoDataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

Para acessar via código vc pode utilizar

import java.sql.*;
import javax.naming.*;
import javax.sql.*;

.
.
.

public static Connection getConnection() throws SQLException {

    try {

            Context context = new InitialContext();
            
            DataSource ds = ( DataSource ) context.lookup( 
                    "java:comp/env/NomeDoDataSource" );
            
            return ds.getConnection();
            
        } catch ( ClassNotFoundException exc ) {
            
            throw new SQLException( exc.getMessage() + " não encontrado." );
            
            
        } catch ( NamingException exc ) {
            
            throw new SQLException( exc.getMessage() );
            
        }

}
Falow!
davidbuzatto

Mais uma coisa, vc precisa adicionar o .jar do driver do banco na pasta common/lib da instalação do seu tomcat.

Vc pode criar quantos data sources vc quiser.

Falow!

Sokoban

Opa!

Brigadao mesmo! Terei que adaptar algumas coisas, mas deu pra entender.
  Assim que puder eu testo pra saber se os dois pools comportam conforme esperado, cada um com seu respectivo datasource.
  Abraço!

 Sokoban

ps.: Há algum limite de conexões ou datasources que o dbcp do Tomcat consegue adminitrar???

Criado 18 de janeiro de 2007
Ultima resposta 23 de jan. de 2007
Respostas 7
Participantes 4