Datasource do Tomcat

5 respostas
Marques

Pessoal,

Estou seguido esse howto de como configurar o datasource no tomcat para o mysql:

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html

e qdo tento utilizar o tomcat me devolve o erro abaixo.

O que acontece?

Sds,
Jm

javax.servlet.ServletException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class ‘’ for connect URL ‘null’"

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

org.apache.jsp.pages.test_jsp._jspService(test_jsp.java:87)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class ‘’ for connect URL ‘null’"

org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)

org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)

org.apache.jsp.pages.test_jsp._jspx_meth_sql_query_0(test_jsp.java:106)

org.apache.jsp.pages.test_jsp._jspService(test_jsp.java:64)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
Apache Tomcat/5.0.28

Trecho acrescentado ao meu web.xml imediatamente antes de fechar a tag :

<resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/TestDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>

Trecho do server.xml no tomcat imediatamente antes de fechar a tag

<!-- ******************************************************************************** -->
<Context path="/DBTest" docBase="DBTest"
    debug="5" reloadable="true" crossContext="true">

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

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

<ResourceParams name="jdbc/TestDB">
<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>100</value>
</parameter>

<!-- Maximum number of idle dB connections to retain in pool.
     Set to -1 for no limit.  See also the DBCP documentation on this
     and the minEvictableIdleTimeMillis configuration parameter.
     -->
<parameter>
  <name>maxIdle</name>
  <value>30</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>teste</value>
</parameter>
<parameter>
 <name>password</name>
 <value>secreta</value>
</parameter>

<!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
     if you want to use this driver - we recommend using Connector/J though
<parameter>
   <name>driverClassName</name>
   <value>org.gjt.mm.mysql.Driver</value>
</parameter>
 -->

<!-- Class name for the official MySQL Connector/J driver -->
<parameter>
   <name>driverClassName</name>
   <value>com.mysql.jdbc.Driver</value>
</parameter>

<!-- The JDBC connection url for connecting to your MySQL dB.
     The autoReconnect=true argument to the url makes sure that the
     mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
     connection.  mysqld by default closes idle connections after 8 hours.
     -->
<parameter>
  <name>url</name>
  <value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>
<!-- ******************************************************************************** -->

5 Respostas

fcmartins

Ele não está achando o driver do MySQL. Você colocou o mesmo na pasta commons/lib?

Além disso, no Tomcat 5.5 mudou o formato do arquivo de configuração. Se essa for a sua versão, as tags Resource e ResourceParam passaram a ficar assim:

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="teste" password="secreta" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true" autoReconnect="true"/>

Marques

Estou usando o tomcat 5.0.28 e o driver do mysql que colaquei na pasta C:\jakarta-tomcat-5.0.28\common\lib chama-se mysql-connector-java-3.0.16-bin.jar

fcanjos

vc pode postar o codigo que vc usa para obter a conexao?

Marques

Estou usando o exemplo que está no howto:

<%@ taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql” %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

<sql:query var=“rs” dataSource=“jdbc/TestDB”>

select id, foo, bar from testdata

</sql:query>
DB Test

Results

<c:forEach var=“row” items="${rs.rows}">

Foo ${row.foo}


Bar ${row.bar}


</c:forEach>
C

Conseguiu resolver o problema? Pois apresento o mesmo…

Criado 3 de março de 2005
Ultima resposta 17 de ago. de 2007
Respostas 5
Participantes 4