DataSorce - Problemas

7 respostas
J

Pessoal,
Configurei meu Tomcat 5.0 como manda a documentação (server.xml e web.xml) mas estou com erro ao pegar a conexao, não esta conseguindo encontrar o Driver :
Excption:

org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

O driver esta no path, e o banco e mysql. Estou Usando JBuilder 2005, li uma duvida de um rapaz que estava com o mesmo problema que eu, o JBuilder não acha o Driver de maneira alguma…parece que algo de errado ocorre quando ele gera um xml serve8080, não sei muito bem…ele estava utilizando JBuilder 8, será que esse problema existe mesmo !?

7 Respostas

R

Ele não está achando é os parâmetros do seu datasource.

J

Rafael,
eu configurei o meu server como estava na documentação do Tomcat:

<Context path="/WEB_COSTI" docBase="WEB_COSTI"
        debug="5" reloadable="true" crossContext="true">

  <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_WEB_COSTI_log." suffix=".txt"
             timestamp="true"/>

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

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

    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>

    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>

    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>

    <parameter>
     <name>username</name>
     <value>root</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>root</value>
    </parameter>

   <parameter>
       <name>driverClassName</name>
       <value>org.gjt.mm.mysql.Driver</value>
    </parameter>
    
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>
    
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/WEB_COSTI?autoReconnect=true</value>
    </parameter>
  </ResourceParams>
</Context>

Tem algo de errado !?!?!

R

Sugiro que não coloque isso no ser server.xml.

Cria um contexto com o nome da sua aplicação(suaApp.xml) em tomcat\conf\Catalina\localhost.

Conteúdo:

<?xml version='1.0' encoding='utf-8'?> <Context workDir="work\Catalina\localhost\suaApp" path="/suaApp" docBase="D:/tomcat500/webapps/suaApp </Context>

E entre as tags <Context> coloca esse conteúdo que está no server.xml que você inseriu

J

segui sua dica masi ainda continua com o mesmo erro ! :sad:

&lt;?xml version='1.0' encoding='utf-8'?&gt; 
&lt;Context workDir=&quot;work\Catalina\localhost\web_costi&quot; path=&quot;/web_costi&quot; docBase=&quot;C&#58;/Web_Cos_TI/Tomcat/webapps/web_costi&quot;&gt;

&lt;Logger className=&quot;org.apache.catalina.logger.FileLogger&quot;
             prefix=&quot;localhost_WEB_COSTI_log.&quot; suffix=&quot;.txt&quot;
             timestamp=&quot;true&quot;/&gt;

&lt;Resource name=&quot;jdbc/web_costi&quot;
               auth=&quot;Container&quot;
               type=&quot;javax.sql.DataSource&quot;/&gt;

  &lt;ResourceParams name=&quot;jdbc/web_costi&quot;&gt;
    &lt;parameter&gt;
      &lt;name&gt;factory&lt;/name&gt;
      &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;
    &lt;/parameter&gt;

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

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

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

    &lt;parameter&gt;
     &lt;name&gt;username&lt;/name&gt;
     &lt;value&gt;root&lt;/value&gt;
    &lt;/parameter&gt;
    
    &lt;parameter&gt;
     &lt;name&gt;password&lt;/name&gt;
     &lt;value&gt;root&lt;/value&gt;
    &lt;/parameter&gt;

    
   &lt;!-- &lt;parameter&gt;
       &lt;name&gt;driverClassName&lt;/name&gt;
       &lt;value&gt;org.gjt.mm.mysql.Driver&lt;/value&gt;
    &lt;/parameter&gt;--&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&#58;mysql&#58;//localhost&#58;3306/WEB_COSTI?autoReconnect=true&lt;/value&gt;
    &lt;/parameter&gt;
  &lt;/ResourceParams&gt;
  
&lt;/Context&gt;
R

Hun…
E como você está recuperando o datasource na sua classe?Posta o código aí…

J

Abaixo o codigo, mas creio que o erro esta sendo gerado por que o JBuilder gera um arquivo ( server8080.xml ) na hora de iniciar o Tomcat sendo assim ele não utiliza o server.xml ou o arquivo da minha aplicação do localhost:

public Conexao&#40;&#41; throws Exception &#123;
       if &#40;dataSource == null&#41; &#123;
           try &#123;

               Context initContext = new InitialContext&#40;&#41;;
               Context envContext = &#40;Context&#41; initContext.lookup&#40;&quot;java&#58;/comp/env&quot;&#41;;
               dataSource = &#40;DataSource&#41;envContext.lookup&#40;&quot;jdbc/web_costi&quot;&#41;;



           &#125; catch &#40;NamingException ex&#41; &#123;
               System.out.println&#40;ex.getMessage&#40;&#41;&#41;;
               ex.printStackTrace&#40;&#41;;
               throw ex;
           &#125;
       &#125;
   &#125;

   /**
    * Obtem a conexao
    * @return Connection
    * @throws SQLException
    */
   public Connection getConnection&#40;&#41; throws SQLException &#123;
       Connection conn = null;
       try &#123;
           conn = dataSource.getConnection&#40;&#41;;
       &#125; catch &#40;SQLException e&#41; &#123;
           e.printStackTrace&#40;&#41;;
           throw e;
       &#125;
       return conn;
   &#125;
R

Substitui isso:

Context envContext = &#40;Context&#41; initContext.lookup&#40;&quot;java&#58;/comp/env&quot;&#41;;

Por isso:

E vê se funciona, caso não, tenta executar isso na mão, sem o JBuilder, pra ver se a zica não tá na IDE.

Criado 16 de agosto de 2005
Ultima resposta 17 de ago. de 2005
Respostas 7
Participantes 2