一种情况是没有找到driver
另一种情况使你的URL写的有问题

解决方案 »

  1.   

    我在server.xml中的配置是:<parameter><name>driverClassName</name>
                <value>oracle.jdbc.driver.OracleDriver</value></parameter>
    <parameter><name>url</name>
    <value>jdbc:oracle:oci8:@(description=(address=(host=16.1.1.73)(protocol=tcp)(port=1521))(connect_data=(sid=fanmiss)))</value>
                </parameter>oracle的驱动classes12.jar放在了/common/lib目录下
    classes12.jar是oracle\jdbc\目录下的classes12.zip改名而来,oracle版本是8.1.7
      

  2.   

    应该没有问题的!
    看看你的oracle客户端配好了吗?
      

  3.   

    出现“No suitable driver”这种问题,一是你的driver没有找到,或者是connection的url不对,或者是你的oracle客户端没有配好,你检查一下这3点。
      

  4.   

    数据库服务器和servelet容器载同一台机子上还用陪客户端吗?不用吧?是驱动器没有找到,又不是服务名没有找到。在这个过程中我也遇到同样的问题。驱动器class12.zip好像不能直接改名class12.jar,否则,在tomcat4。1和jdk1。4环境下并不能找到这个驱动程序类,我是直接用创建连接的方式来验证的。解压后把里面的sql包删掉,再用 jar命令生成class12.jar.放在common/lib下面,但是在使用连接池的连接时还是遇到了和你一样的问题。
    提示为“  cannot load jdbc driver 'null'”表明时没有找到驱动程序,实际上面我也说了class12.jar在common/lib下面,而且自己创建连接也可以访问数据库,表明驱动程序在它应该在的地方。可能是server.xml的配置不对,但是我是看了tomcat的文档和很多其他的资料后配置的,不知道原因在那里。有没有配置成功的提供一点心得?我的配置如下:
          <Host name="localhost" debug="0" appBase="webapps" 
           unpackWARs="true" autoDeploy="true">
         
            <Logger className="org.apache.catalina.logger.FileLogger"
                     directory="logs"  prefix="localhost_log." suffix=".txt"
            timestamp="true"/>        <!--
              <Context path="/ROOT" docBase="ROOT" debug="0"/>
            -->  
    <Context path="" docBase="d:\yqk" 
             reloadable="true" debug="0" privileged="true"/>
     <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_yqk_log." suffix=".txt"
     timestamp="true"/>
     
                <Resource name="jdbc/OracleDB" auth="Container"
           type="javax.sql.DataSource"/> 
    <ResourceParams name="jdbc/OracleDB">
      <parameter>
        <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@128.0.93.126:1521:war</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>ddd</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>ddd</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>10</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>10000</value>
      </parameter>
    <parameter>
    <name>removeAbandoned</name>
    <value>true</value>
    </parameter>
    <parameter>
    <name>removeAbandonedTimeout</name>
    <value>60</value>
                 </parameter>
                 <parameter>
                  <name>logAbandoned</name>
                  <value>true</value>
                </parameter>
    </ResourceParams>
             <!-- Tomcat Examples Context -->
            <Context path="/examples" docBase="examples" debug="0"
                     reloadable="true" crossContext="true">
              <Logger className="org.apache.catalina.logger.FileLogger"
                         prefix="localhost_examples_log." suffix=".txt"
               timestamp="true"/>
      
      
              <Ejb   name="ejb/EmplRecord" type="Entity"
                     home="com.wombat.empl.EmployeeRecordHome"
                   remote="com.wombat.empl.EmployeeRecord"/>
      
      
              <Environment name="maxExemptions" type="java.lang.Integer"
                          value="15"/>
              <Parameter name="context.param.name" value="context.param.value"
                         override="false"/>
     
              <Resource name="mail/Session" auth="Container"
                        type="javax.mail.Session"/>
              <ResourceParams name="mail/Session">
                <parameter>
                  <name>mail.smtp.host</name>
                  <value>localhost</value>
                </parameter>
              </ResourceParams>
              <ResourceLink name="linkToGlobalResource" 
                        global="simpleValue"
                        type="java.lang.Integer"/>
            </Context>另外在我自己的yqk/Web-inf/web.xml中如下配置:
    <web-app>
      <servlet>
        <servlet-name>downloadservlet</servlet-name>
        <servlet-class>javazoom.download.DownloadServlet</servlet-class>
        <init-param>
          <param-name>beanid</param-name>
          <param-value>downloadbean</param-value>
        </init-param>
        <init-param>
          <param-name>configfile</param-name>
          <param-value>conf/folder.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>downloadservlet</servlet-name>
        <url-pattern>/download/*</url-pattern>
      </servlet-mapping>
     
    <resource-ref>
     <description>Oracle Datasource example</description>
     <res-ref-name>jdbc/OracleDB</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref></web-app>

    另外测试文件如下:
              Context initCtx = new InitialContext();
                          
              Context ctx = (Context) initCtx.lookup("java:/comp/env");
                    //获取连接池对象
      //      System.err.println(ctx);              
              Object obj = (Object) ctx.lookup("jdbc/OracleDB");    
    //        System.err.println(obj.toString());
                    //类型转换
                          
              javax.sql.DataSource ds = (javax.sql.DataSource)obj;
    //                      System.err.println("ds");
              Connection conn = ds.getConnection();
                                                System.err.println("conn");
    //不能运行到这里
              Statement stmt = conn.createStatement();
                          
              String strSql = " select distinct(xinghao) from newinstzb ";
                          
              ResultSet rs = stmt.executeQuery(strSql);
                        if(rs.next()){
                                 
              out.println(rs.getInt(1));                 
              }
                   }catch(Exception ex){
                          out.println(ex.toString());
              ex.printStackTrace();
                   // throw new SQLException("cannot get Connection pool this.");错误::
    java.sql.SQLException: Cannot load JDBC driver class 'null'
      

  5.   

    http://expert.csdn.net/Expert/topic/1845/1845764.xml?temp=.3689844
    这里有,看看说不定有帮助
      

  6.   

    http://www.zdnet.com.cn/developer/code/story/0,2000081534,39134180,00.htm,说得很详细的
      

  7.   

    我用的Tomcat版本是4.0。是不是4.0里不叫url,而叫driverName呢?
      

  8.   

    正确,4。0确实不叫url,而叫driverName