Pool no TOMCAT

Por favor, se alguém puder dar uma dica agradeço muito…já faz dois dias que estou batendo cabeça…

Já li vários artigos etc etc mas nada de funcionar…e esta dando a seguinte mensagem
Cannot create JDBC driver of class ‘’ for connect URL ‘null’

Se alguém puder dar uma dica agradeço muito…Valeu…

Eu criei um arquivo testeInterbase.xml em tomcat\conf\catalina\localhost

<Context 
   path="/projeto-teste" 
   docBase="c:\eclipse\workspace\projeto-teste\target" 
   debug="0" 
   reloadable="true">

   <Resource name="jdbc/jndiInterbase"
             auth="Container"
             type="javax.sql.DataSource"/>

   <ResourceParams name="jdbc/jndiInterbase">
 
     <parameter>
         <name>factory</name>
         <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>

      <!-- Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to 0 for no limit.
      -->
      <parameter>
         <name>maxActive</name>
         <value>3</value>
      </parameter>

      <!-- Maximum number of idle dB connections to retain in pool.
         Set to 0 for no limit.
         -->
      <parameter>
         <name>maxIdle</name>
         <value>2</value>
      </parameter>

      <!-- Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->
      <parameter>
         <name>maxWait</name>
         <value>10000</value>
      </parameter> 

      <!-- MySQL dB username and password for dB connections  -->
      <parameter>
         <name>username</name>
         <value>sysdba</value>
      </parameter>

      <parameter>
         <name>password</name>
         <value>masterkey</value>
      </parameter>

      <parameter>
         <name>driverClassName</name>
         <value>org.firebirdsql.jdbc.FBDriver</value>
      </parameter>

      <parameter>
         <name>url</name>
         <value>jdbc:firebirdsql:127.0.0.1/3050:c:/BancoCaelum.gdb</value>
      </parameter>

  </ResourceParams>


</Context>

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4">
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/jndiInterbase</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

Voce colocou o jar do banco no diretorio commons/lib do Tomcat?

Rafael

Bem, no meu entender você deve estar usando Tomcat 4.x ou 5.0.x.
E usando o SGBD Firebird para acessar uma base InterBase.
Se for isso, então:

Parece haver um erro no parâmetro url, tente alterá-lo para:

   <parameter>
      <name>url</name>
      <value>jdbc:firebirdsql://127.0.0.1:3050/c:/BancoCaelum.gdb</value>
   </parameter>

Então…o jar está na pasta lib e tentei mudar o caminho

url jdbc:firebirdsql://127.0.0.1:3050/c:/BancoCaelum.gdb

mas também não resolveu…alguma outra possibilidade…

Voce criou o Data Soucer no tomcat né?

Verifique se voce criou dentro do escopo da sua aplicação, quando fiz isso parou de dar esse erro!

Voce criou o Data Soucer no tomcat né?

Verifique se voce criou dentro do escopo da sua aplicação, quando fiz isso parou de dar esse erro!

Ops! Deu pau no fórum e duplicou a mensagem :?

Para uma melhor análise do problema, indique as versões de:

sistema operacional?
jsdk?
Tomcat?
Firebird?

Tentando adiantar…

Como seu web.xml indica a especificação 2.4 de Servlet, suponho que esteja usando o Tomcat 5.5.x (por isso na minha 1a. intervenção indiquei aplicar-se às versões 4.x e 5.0.x).

É que no Tomcat 5.5.x, modificou-se a forma de especificar o JNDI DataSource.
Veja no link:
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
Na seção “Introduction”, consta um trecho em destaque:
"Please note that JNDI resource configuration has changed somewhat between Tomcat 5.0.x and Tomcat 5.5.x. "

Resumindo:
não existe mais a tag ResourceParams, ficando seus parâmetros definidos como atributos da tag Resource.
veja os exemplos para MySQL, Oracle e PostgreSQL, no referido link.

Fiz testes com Firebird 1.5 e Tomcat 5.5.9 e funcionou.

Portanto, use:

<Resource name=“jdbc/jndiInterbase” auth=“Container”
type=“javax.sql.DataSource”
maxActive=“3” maxIdle=“2” maxWait=“10000”
username=“sysdba” password=“masterkey”

   driverClassName="org.firebirdsql.jdbc.FBDriver"
                 url="jdbc:firebirdsql://127.0.0.1:3050/c:/BancoCaelum.gdb" />

Um detalhe:
No caso do Firebird 1.5, sugiro usar ‘alias’ ao invés do caminho físico real (c:/BancoCaelum.gdb).
Edite o arquivo “aliases.conf” localizado no diretório de instalação do FireBird (no WindowsXP: c:/Arquivos de Programas/Firebird/FireBird1.5/), adicionando a linha:

bancoFB=c:/BancoCaelum.gdb

Depois disso, o atributo url da tag Resource acima ficaria:
url=“jdbc:firebirdsql://127.0.0.1:3050/bancoFB”

Cara, não vou mais encher o saco…mas eu já tinha feito uns testes com o que vc tinha escrito ontem…só que estou com um outro erro…

 Unable to get connection, DataSource invalid: "org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Resource Exception. Unable to complete network request to host "127.0.0.1". Reason: Unable to complete network request to host "127.0.0.1".)" 
trace : [Ljava.lang.StackTraceElement;@103fcaa 

já mudei o caminho p/ o que estava e também não vai…
estou fazendo mais ou menos assim

		javax.naming.Context ctx = new javax.naming.InitialContext();
		javax.sql.DataSource dataSource = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/jndiInterbase");
        Connection con = dataSource.getConnection();
		PreparedStatement stmt = con.prepareStatement("select * from produto");
		ResultSet rs = stmt.executeQuery();

Tem alguma diferença do TOMCAT p/ o JBOSS neste caso ??? Porque no JBOSS está funcionando sem problemas…

olha só como deixei o arquivo Interbase-ds.xml p/ o JBOSS

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
   <local-tx-datasource>
      <jndi-name>jdbc/jndiInterbase</jndi-name>
      <connection-url>jdbc:firebirdsql:127.0.0.1/3050:c:/BancoCaelum.gdb</connection-url>
      <driver-class>org.firebirdsql.jdbc.FBDriver</driver-class>
      <user-name>sysdba</user-name>
      <password>masterkey</password>
      <min-pool-size>1</min-pool-size>
      <max-pool-size>1</max-pool-size>
      <idle-timeout-minutes>0</idle-timeout-minutes>
      <track-statements/>
   </local-tx-datasource>
</datasources>

Nós estamos aqui para tentar nos ajudar.
Eu também já “apanhei” muito com configuração de Pool de Conexões para banco de dados.
Bem, enquanto eu puder oferecer alguma dica, me disponho a ajudar.

Atualmente tenho experiência com MySQL, Oracle e Firebird, tanto em Tomcat com no Resin.

Me informe as versões de:

  • sistema operacional
  • jskd
  • tomcat
  • firebird
  • driver JDBC Firebird

Isso é importante para que eu tente reproduzir o problema que está ocorrendo.

Quanto ao erro que agora você está relatando:

  • você tem os Jakarta-Commons necessários para implementar o chamado DBCP (DataBase Connection Pool) ?
    São eles:
    DBCP (commons-dbcp),
    Collections (commons-collections)
    e Pool (commons-pool)

Estou anexando os arquivos .jar que tenho aqui (já devem existir novas versões)

Os .jar dever ser colocados em \common\lib

Vamos lá…

win2000
jakarta-tomcat-5.5.8.exe
jdk-1_5_0_02-windows-i586-p.exe
FirebirdSQL-1.5.5JDK_1.4.zip

coloquei os arquivos que vc anexou no commom\lib , depois atualizei com novas versoes , mesmo assim, nada…

a msg mudou p/ :

Cannot create JDBC driver of class ‘’ for connect URL ‘null’

já estou ficando louco…Valeu pela força…

Olá

Estou com problemas quando vou compilar um servlet, não é erro no código em si…mas nas importações referentes ao HTTP e o servlet!!!
O que eu preciso configurar para obter a compilação??? estou usando o TomCat 5.0, j2sdk 1.4.2_06, windows XP…

meu email para contato é rafa_cjc@yahoo.com.br

até mais

Rafael de Paula Silva

Pode estar ocorrendo algum problema no deployment de sua aplicação.

Para testar esta hipótese, tente:

  1. Renomeie o arquivo testeInterbase.xml em tomcat\conf\catalina\localhost
    para projeto-teste.xml

  2. Se ainda não funcionar, tente usar esta outra forma de definir o :

  • Momentaneamente remova o arquivo xml do item 1, para outro local, a fim de não interferir.

  • Edite o arquivo \conf\server.xml

  • Procure o fechamento da tag host:

  • ANTES dela, ou seja, dentro da tag host, insira todo o conteúdo de sua tag context:

    .
    .
    .

valeu…

Com relação ao item 2 da última mensagem, esqueci de dizer:

é necessário dar um RESTART no Tomcat.

mesmo erro…

Vou anexar os arquivos p/ vc dar uma olhada

Qdo vc tiver um tempo dá uma olhada…

Cara , Valeu pela força e paciência…

Estou anexando dois arquivos:
web.xml (baseado no da struts-blank)
e projeto-teste.xml (com o context definindo o recurso de DataSource)

ANTES DE PROSSEGUIR, FAÇA BACKUP DE SEUS ARQUIVOS.

tente o seguinte:

  • Pare o Tomcat
  • Copie o web.xml para /WEB-INF da aplicação
  • Copie o projeto-teste.xml para \conf\Catalina\localhost
  • Dê START no Tomcat

Perguntas: você tem algum diretório /META-INF na aplicação? que arquivos estão lá?

CARA…Obrigado pela paciência …funcionou…

desculpe a demora é que estou na correira em um cliente…

Sera que posso te encher so com mais uma coisa…

SE EU FOSSE UTILIZAR O HIBERNATE, COMO SERIA A CONFIGURACAO?
Seria só configurar o hibernate.properties +ou- assim ???

hibernate.connection.datasource java:comp/env/jdbc/jndiInterbase
hibernate.dialect org.hibernate.dialect.InterbaseDialect
hibernate.connection.username sysdba
hibernate.connection.password masterkey

vc teria algum link explicando , ja procurei mas os que encontrei nao deu p/ pegar…

Muito Obrigado mais uma vez !!!

Infelizmente, não posso te ajudar: ainda não uso Hibernate.

É um dos próximos assuntos de estudo para mim…

Mas certamente alguém do fórum pode te ajudar.
Coloque outra mensagem agora sobre o hibernate.
Também tenho interesse em saber…

Valeu!

Valeu mesmo…se precisar e eu puder ajudar manda um email ou msg blz…