最近在配置tomcat6连接池出现问题了,将以下代码放入tomcat的conf的context.xml,并将jdbc驱动放入tomcat的lib
目录,然后运行我提供的jsp文件显示成功读取数据库的表数据。  <Resource  name="jdbc/mengshan"  
            auth="Container"  
        type="javax.sql.DataSource"  
            maxActive="20"  
            maxIdel="10"  
            maxWait="1000"  
            username="root"  
            password=""  
    driverClassName="com.mysql.jdbc.Driver"   
    url="jdbc:mysql://127.0.0.1:3306/test"  
        >  
</Resource> <%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %> 
<%@ page import="javax.sql.DataSource"%> 
<%@ page import="javax.naming.InitialContext"%> 
<%@ page import="java.sql.*"%> 
 <% 
 DataSource ds = null; 
 try{ 
 Context initCtx = new InitialContext(); 
 Context envCtx = (Context) initCtx.lookup("java:comp/env"); //从Context中lookup数据源
 ds = (DataSource)envCtx.lookup("jdbc/mengshan"); if(ds!=null) {
  out.println("已经获得DataSource!");
  out.println("<br>");Connection conn = ds.getConnection();
  Statement stmt=conn.createStatement();ResultSet rst=stmt.executeQuery("select * from usertable");
  out.println("以下是从数据库中读取出来的数据");
  while(rst.next()){
  out.println("bookName:"+rst.getString(1));
  out.println("<br>"); }}else out.println("连接失败!"); }
  catch(Exception ne){out.println(ne);} 
  %>
 
现在我想用第二种方法配置数据源就是把这个xml内容放入一个具体的项目test目录
在test新建META-INF,创建context.xml
内容如下
<?xml version='1.0' encoding='utf-8'?>
 <Context>
  <Resource  name="jdbc/mengshan"  
            auth="Container"  
        type="javax.sql.DataSource"  
            maxActive="20"  
            maxIdel="10"  
            maxWait="1000"  
            username="root"  
            password=""  
    driverClassName="com.mysql.jdbc.Driver"   
    url="jdbc:mysql://127.0.0.1:3306/test"  
        >  
</Resource>  
</Context>
并在该项目web.xml加入
  <resource-ref>
       <res-ref-name>jdbc/mengshan</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
    </resource-ref>同样运行出现错误
已经获得DataSource! 
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 
如何解决此问题呢?

解决方案 »

  1.   

    1 下个最新的mysql驱动jar包试试 mysql-connector-java-5.1.5-bin.jar2 同时驱动要放到你的项目WEB-INF/lib 下
      

  2.   

    我发现如果zaiTomcat 6.0\conf\Catalina\localhost找到对应的项目配置文件,加入以下就可以  
    <Resource  name="jdbc/mengshan"  
                auth="Container"  
            type="javax.sql.DataSource"  
                maxActive="20"  
                maxIdel="10"  
                maxWait="1000"  
                username="root"  
                password=""  
        driverClassName="com.mysql.jdbc.Driver"   
        url="jdbc:mysql://127.0.0.1:3306/test"  
            >  
    </Resource>  
    驱动我已经放在lib目录,不存在驱动问题,因为上面我也读取成功了。
      

  3.   

    我的驱动版本是mysql-connector-java-5.1.10-bin.jar
      

  4.   

    Cannot create JDBC driver of class '' for connect URL 'null' 
    url错了?但是你说上面一个是好的
    看看是不是哪里的名字或路径写错了
      

  5.   

    你这么配试验下:
    在tomcat6->conf->context.xml文件,在<context></context>之间添加:
     
    <Context> 
      <Resource  name="jdbc/mengshan"  
                auth="Container"  
            type="javax.sql.DataSource"  
                maxActive="20"  
                maxIdel="10"  
                maxWait="1000"  
                username="root"  
                password=""  
        driverClassName="com.mysql.jdbc.Driver"  
        url="jdbc:mysql://127.0.0.1:3306/test"  
            >  
    </Resource>  
    </Context> 2.web.xml中的<web-app></web-app>添加:<resource-ref> 
          <res-ref-name>jdbc/mengshan </res-ref-name> 
          <res-type>javax.sql.DataSource </res-type> 
          <res-auth>Container</res-auth> 
        </resource-ref> 
      

  6.   

    这样是可以的啊!我第一个方法就是这么写的,但是不灵活啊!我想在项目的META-INF文件配置。
      

  7.   

    第二种方法要把驱动拷贝到你工程的lib下面
      

  8.   

    并在该项目web.xml加入 
      <resource-ref> 
          <res-ref-name>jdbc/mengshan </res-ref-name> 
          <res-type>javax.sql.DataSource </res-type> 
          <res-auth>Container </res-auth> 
        </resource-ref> 这个没必要
      

  9.   

    如果还是不行就改context.xml文件为:<?xml version="1.0" encoding="UTF-8"?>
    <Context path="/">
        <Resource name="jdbc/mengshan" auth="Container" type="javax.sql.DataSource"/>
        <ResourceParams name="jdbc/mysql">
            <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></value>
            </parameter>
            <parameter>
                <name>driverClassName</name>
                <value>com.mysql.jdbc.Driver</value>
            </parameter>
            <parameter>
                <name>url</name>
                <value>jdbc:mysql://127.0.0.1:3306/test</value>
            </parameter>
        </ResourceParams>
    </Context>
      

  10.   

    问题解决!查看这里把http://www.javaeye.com/topic/373087
    一直没有注意这个问题,原来一旦配置了虚拟目录,META-INF这个Context.xml文件就不在生效了,此文件只在没有配置虚拟目录的时候才生效。
    ,怪不得我在配置虚拟目录的文件里加入这个
    <Context> 
      <Resource  name="jdbc/mengshan"  
                auth="Container"  
            type="javax.sql.DataSource"  
                maxActive="20"  
                maxIdel="10"  
                maxWait="1000"  
                username="root"  
                password=""  
        driverClassName="com.mysql.jdbc.Driver"  
        url="jdbc:mysql://127.0.0.1:3306/test"  
            >  
    </Resource>  
    </Context> 
    就可以了,感谢大家!
    为seo留下一个足迹把,我搜了好长时间也没有解决
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'