用tomcat6.0连接池和hibernate3.2+spring2.5连接数据库时出现以下异常:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:89)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at com.microsoft.sqlserver.jdbc.Util.parseUrl(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
... 20 more望高手帮们解决:
jsp页面为:
<%@ page language="java" pageEncoding="utf-8"%> <%@ page import="java.sql.*"%> <%@ page import="javax.sql.*"%> <%@ page import="javax.naming.*"%> <html> <head> <title>Test of Tomcat  connection pool</title> </head> <body> <% out.print("strat test connection pool!<br/>"); try{  Context initCtx = new InitialContext();  Context ctx = (Context) initCtx.lookup("java:comp/env/");  Object obj = (Object) ctx.lookup("jdbc/Hotel");  DataSource ds = (javax.sql.DataSource)obj;  Connection conn = ds.getConnection();  out.print("tomcat sqlserver connection pool runs perfectly!");  conn.close(); } catch(Exception ex){  out.print(ex.getMessage());  ex.printStackTrace(); } %> </body> </html> 页面输出为:
strat test connection pool!
Cannot create JDBC driver of class '' for connect URL 'null' 

解决方案 »

  1.   

    应该是你数据源连接池配置出错了
    检查下web.xml
    <resource-ref>
         <res-ref-name>jdbc/Hotel</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
    </resource-ref> 
    再检查下server.xml
    <Resource auth="Container"
    driverClassName="---------"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    name="jdbc/Hotel"
    username="name"
    password="password"
    type="javax.sql.DataSource" url="-----------------" />
      

  2.   

    补充问题:以下是context.xml的配置:
    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/Hotel"   
        auth="Container" 
        type="javax.sql.DataSource"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
        url="jdbc:sqlserver://localhost:1433;databaseName=Hotel" 
        username="sa"     
        password=""
        maxActive="100" 
        maxIdle="30" 
        maxWait="10000" 
        />
    </Context>
    url的配置没有错啊
      

  3.   

    spring的配置为
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="datasourcetarget"
    class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/Hotel"></property>
    </bean>
    <bean id="datasource"
    class="org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter">
    <property name="targetDataSource">
    <ref bean="datasourcetarget" />
    </property>
    <property name="username" value="sa"></property>
    </bean>
    <bean id="SessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="datasource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.SQLServerDialect
    </prop>
    </props>
    </property>
          </bean>
    </beans>hibernate时受spring管理的
    web.xml
    的配置为:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <resource-ref>
            <description>MSSql DataSource</description>
            <res-ref-name>jdbc/Hotel</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
      

  4.   

    http://topic.csdn.net/u/20090904/08/e674f0f3-ec3b-4ea0-8e5f-5ed35788165a.html看2楼
      

  5.   

    一样的啊。
    <!-- appName 为项目名 --!>  
    <Context path="/appName" docBase="appName" auth="Container">  
        <Resource name="jdbc/SQLServerDS" scope="Shareable"  
            type="javax.sql.DataSource"  
            url="jdbc:sqlserver://localhost:1433;databaseName=Hotel"  
            driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
            username="sa" password=""  
            maxWait="3000" maxIdle="100" maxActive="10" />  
    </Context>
      

  6.   

    配置了context.xml是否还要配置server.xml文件呢?它们两的配置好像一样的啊
      

  7.   

    1 可能没有相关的库jar
    2 可能是服务器问题,换一个tomcat测试一下
      

  8.   

    如1楼所说,应该是tomcat的server .xml配置有问题。10楼说的情况也有可能。
      

  9.   

    除此之外,还有这个异常:
    Caused by: java.lang.NullPointerException
    at com.microsoft.sqlserver.jdbc.Util.parseUrl(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.acceptsURL(Unknown Source)
    at java.sql.DriverManager.getDriver(Unknown Source)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
    ... 20 more
      

  10.   

    正确配置context.xml后就不用配置server.xml了建议你先写个jsp,里边写获取连接的代码,测试下能否成功还有  你的spring的配置 这样试下
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
    <value>java:comp/env/jdbc/Hotel</value>
    </property>
    </bean>
    <beans>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingResources">
    <list>
    <value>HIBERNATE OR</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
    </props>
    </property>
    </bean>
    </beans>
      

  11.   

    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
    1、这里面的顺序错了
    2、驱动必须放在tomcat的lib下面
    3、必须用jdbc4.jar这个驱动mb,我也搞了3个来小时。