Quantidade de Pool de conexões no Tomcat

Ae pessoal!

Quantos Pool de conexões disponíveis vocês aconselham a utilizar numa aplicação que estará disponível em um portal com +/- 900 acessos/dia? Isso não quer dizer que todos irão acessar essa aplicação, mas tenho receio de configurar um número pequeno e dar problema. Como vocês tratam esse caso?

A propósito, estou utilizando Apache Tomcat/4.1.27.

Valeu!!

Olá

Sua dúvida é sobre quantas conexões pode colocar no pool? (qual pool?). As resposta não depende do tomcat e sim do seu ambiente (tamanho do hardware + aplicações rodando). Faça testes, vá colocando mais e mais e monitorando.

Quanto ao tomcat sugiro fortemente atualizar para no mínimo 4.1.31. Melhor seria passar para o tomcat 5.0.x (cuidando de algumas pequeninas incompatibilidades)

[]s
Luca

Utilizo mysql e vou utilizar oracle.

Configuração da máquina:

Sistema operacional: Compaq Tru64 UNIX V5.1A
memoria: 1.024 Gb
modelo: COMPAQ AlphaServer DS10 - 617 MHz

Existe uma forma de monitorar o pool do Tomcat pelo próprio Tomcat?
Ou teria de codificar algo? tipo… testar quantas conexões estão sendo criadas e removidas.

Olá

O tomcat não tem nada a ver com pool de conexões. Você pode usar diferentes pools tais como jakarta-commons-dbcp (que funciona com jakarta-commons-pool), c3p0, oracle e muitos outros. Se você usa o dbcp que tem uma versão mais antiga que vem junto com o tomcat, e que funciona junto com o commons-pool, você pode pegar valores a partir de um ObjectPool que tem métodos para monitorar as conexões ativas no pool.

Minha dica é estudar a api jakarta-commons-pool (e como iniciar o pool do dbcp a partir de beanfactory)

[]s
Luca

Legal… deixa eu entender melhor.

Para configurar o pool de conexões no Tomcat eu configurei no contexto da aplicação os DataSources: (é certo dizer isso?)

[quote] <Resource name=“jdbc/GMDS” auth=“Container” type=“javax.sql.DataSource”/>

  &lt;ResourceParams name="jdbc/GMDS"&gt;
  &lt;parameter&gt;
   	&lt;name&gt;factory&lt;/name&gt;

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

    &lt;parameter&gt;
        &lt;name&gt;maxActive&lt;/name&gt;
  	    &lt;value&gt;10&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;maxIdle&lt;/name&gt;
   	    &lt;value&gt;5&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;maxWait&lt;/name&gt;
        &lt;value&gt;3000&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
    	&lt;name&gt;username&lt;/name&gt;
        &lt;value&gt;meuuser&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;password&lt;/name&gt;
        &lt;value&gt;meupass&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;driverClassName&lt;/name&gt;
        &lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;url&lt;/name&gt;
        &lt;value&gt;jdbc:mysql://localhost:3306/mydb?autoReconnect=true&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;removeAbandoned&lt;/name&gt;
        &lt;value&gt;true&lt;/value&gt;
    &lt;/parameter&gt;

    &lt;parameter&gt;
        &lt;name&gt;removeAbandonedTimeout&lt;/name&gt;
        &lt;value&gt;60&lt;/value&gt;
    &lt;/parameter&gt;

  &lt;/ResourceParams&gt;

[/quote]

Estou utilizando org.apache.commons.dbcp.BasicDataSourceFactory para gerar os DataSources, é isso mesmo?

então no web.xml da aplicação:

[quote]<resource-ref>
<description>DB Connection MySQL</description>
<res-ref-name>jdbc/GMDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
[/quote]

Esse pool fica disponível através de JNDI, certo?

e em minha aplicação, eu localizo e manipulo esse pool:

[quote].
.
.
Connection connection = null;

    try {

        Context context = new InitialContext();

        if( context == null ) {

            throw new Exception( "Boom!! - No Context!" );
        
        }

        DataSource dataSource = (DataSource)context.lookup( "java:comp/env/jdbc/GMDS" );
        
        if( dataSource != null ) {
            
            connection = dataSource.getConnection();
            
        }

    } 
    catch( Exception e ) {

        e.printStackTrace();

    }   

.
.
.
[/quote]

A minha dúvida é como criar os objetos ObjectPool sendo que apenas pego os DataSources disponíveis no contexto da aplicação? Eu teria de criar meus DataSources de outra forma?