大家好,我最近用tomcat连接池配置出现了一个问题,请大家帮忙解决:
谢谢
先说说我的配置:
C:\Tomcat\conf\Catalina\localhost中ROOT.xml中:<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc//ROOT" type="javax.sql.DataSource" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="数据库用户名" password="密码" url="jdbc:microsoft:sqlserver://211.211.211.00;DatabaseName=数据库名" maxActive="4"/>
</Context>
C:\Tomcat\conf中server.xml(<Host></Host>)中:  <Resource name="jdbc//ROOT" type="javax.sql.DataSource" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="数据库用户名" password="密码" url="jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=数据库名" maxActive="4"/>C:\www\196hotel.com\ROOT\WEB-INF中(我的工程放在其他的目录下的):<resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/ROOT</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  </resource-ref>我在工程中是这样调用的: public static Connection getConnection() {
        Connection con = null;
        try {
            Context initCtx = new InitialContext();
            DataSource ds = (DataSource) initCtx.lookup(
                    "java:comp/env/jdbc/ROOT");
            if (ds != null) {
               System.out.println("获取成功DataSource"+ds);
                con = ds.getConnection();
                 System.out.println(con+"=con");
            }
            return con;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
我输出的结果总是:获取成功DataSourceorg.apache.tomcat.dbcp.dbcp.BasicDataSource@d647d8
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'希望哪位高手指点一下,谢谢!!

解决方案 »

  1.   

    sql server不大会用,mysql中出现这个错误是驱动不正确引起的.
    LZ看看是不是驱动的问题.
      

  2.   

    看看这个 http://topic.csdn.net/t/20050817/17/4214643.html
      

  3.   

    看来程序是肯定没有问题的.你看看服务器上的环境和你的一致不?
    是不是服务器上没有将驱动加到classpath中?
    这些东西很烦,一不小心就弄错;前一阵子配置tomcat6+mysql也搞得头大
      

  4.   

    我不知道你的问题出在哪里, 因为我还没有在tomcat中配置过jndi, 不过今天试着做了一下,数据库是sqlserver2000,tomcat6.0, 还用到了spring容器, 步骤如下:
    1  拷贝ms驱动包msbase.jar,mssqlserver.jar,msutil.jar到lib;
    2  tomcat_home/conf/server.xml中配置resource:<Context>
    ......
        <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000"
    username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Book;SelectMethod=Cursor"/>
    </Context>3  在spring 的bean配置文件中配置一个dataSource, 这个dataSource将应用上面配置的jndi;<bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
    <value>java:comp/env/jdbc/TestDB</value>
    </property>
    </bean>4  用上面的dataSource bean代替以前的dataSource, 项目运行完全正常.希望给你帮助.
      

  5.   

    谢谢,
    我本来在本地测试是没有问题的,
    但是本地和服务器不一样的是:服务器工程不在tomcat的webapps目录中
    而是重新建的C:\www\196hotel.com\ROOT目录
    是不因为这个的原因,映射的路径是不要有什么改动除了这个我真的找不出其他的原因了
      

  6.   

    "获取成功DataSourceorg.apache.tomcat.dbcp.dbcp.BasicDataSource@d647d8"从这句来看DataSourde应该是取到了的;那多半是没有取到驱动,楼主先测试下在服务器上不用连接池可不可以连接到数据库.
      

  7.   

    那你把项目放到webapps下面看看,如果可以,那就是映射的问题了。