server.xml配置如下:
<Context path="/ch000" docBase="ch000" debug="0"                 
reloadable="true" crossContext="true">   <Resource name="jdbc/temp" auth="Container" type="javax.sql.DataSource"/>
   
<ResourceParams name="jdbc/temp">
        
<parameter>             
<name>factory</name>                  
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>                     
</parameter>
  
<parameter>                      
<name>driverClassName</name>                               
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>                                  
</parameter>
  
<parameter>             
<name>url</name>             
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST</value>  
</parameter>
              
                
<parameter>     
<name>maxActive</name>    
<value>20</value>
</parameter>
              
<parameter>
<name>maxIdle</name>    
<value>10</value>  
</parameter>
  
<parameter>        
<name>maxWait</name>     
<value>1</value>   
</parameter>
        
</ResourceParams>     
</Context>                                    web.xml配置如下:
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<resource-ref>
<description>DB connection</description>
<res-ref-name>jdbc/temp</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>                                    DatabaseConn.java 如下:
package com.jspdev.util;import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
public  static  synchronized Connection getConnection() throws Exception
{
try
{

Context initCtx = new javax.naming.InitialContext(); 
            //Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
           // DataSource ds = (DataSource)envCtx.lookup("jdbc/temp"); ;
DataSource ds= (DataSource) initCtx.lookup("java:comp/env/jdbc/temp");
return ds.getConnection();
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
      throw e;
}

}}                                  conpool.jsp如下:
<%@ 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.*"%>
<%@ page import="com.jspdev.util.*"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body>
<%
try {
Connection conn = DatabaseConn.getConnection();
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("select * from test");
out.println("----------------");
while (rst.next()) {
out.println("Name:" + rst.getString("Name"));
out.println("<br>");
}
rst.close();
stmt.close();
conn.close();
} catch (Exception ne) {
out.println(ne);
} %>
<BR>
this is conpool.jsp
</body>
</html>在浏览器输入:http://localhost:8080/ch000/conpool.jsp
出现如下:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 
this is conpool.jsp 请能人回答下,哪里出问题了?
另:jdbc都安装了的,而且也把那3个*.jar拷到common/lib中去了的。

解决方案 »

  1.   

    你这是配的全局数据源
    还要在你WEB项目下的META-INF文件夹下的context.xml中设置数据源链接(没有自己手动建一个)
    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
      <ResourceLink
       name="jdbc/temp" 
       type="javax.sql.DataSource" 
       global="jdbc/temp"/>
    </Context>
       属性说明:name,同你在WEB.XML中子节点res-ref-name值;
                 type,同样取”javax.sql.DataSource”;
                 global,同name值。
      

  2.   

    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 
    this is conpool.jsp <name>url</name>             
    <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST</value> 可能有问题
      

  3.   

    <name>url</name>             
    <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST;user=sa;password=sql;</value>怎么没看到你数据源里面连接数据库的账号密码??
    在你的server.xml 配制里面加上
         <parameter>
          <name>username</name>
          <value>sa</value>
         </parameter>
         <parameter>
          <name>password</name>
          <value></value>
         </parameter>
      

  4.   

    谢谢各位的支持。
    TO:mikewolf_sky(天狼子) 
    按照你的方法,我手动添加了context.xml。但问题还是一样。
    TO:feigme(泡沫微笑。o 0) 因为我的数据库默认用dbo,所以没有去设置用户跟密码。
    再次谢谢!!
    希望高手能解答
      

  5.   

    TO:feigme(泡沫微笑。o 0) 你好!
    同样按照你的方法添加上去了数据库的账号密码。但问题还是一样。。
      

  6.   

    http://o0jsp.54bk.com
    偶写了一篇搞连接池的,应该蛮详细了,你看看吧,希望对你有用!GOOD LUCK!
      

  7.   

    你的tomcat是不是5.5版本,如果是,配置连接池的地方需要改动
      

  8.   

    参数需要全部写在这里面
    <ResourceParams name="jdbc/temp"  .....>
      

  9.   

    先谢谢楼上两位朋友!
    TO:chaucer518(我爱我家的思思), http://127.0.0.1:8080/admin ,我的TOMCAT说要下载admin。改天再下载来研究。
    TO:liaoxiaoqi(天崖) ,我的TOMCAT是5.5.17。按照你的方法,我把我的参数贴出来看对不对。<ResourceParams 
          name="jdbc/temp"
          type="javax.sql.DataSource"
          password="bn"
          driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
          maxIdle="20"
          maxWait="5000"
          username="bn"
          url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;user=bn;password=bn;"
    maxActive="100"> 
    但出现了另外一种异常:
    javax.naming.NameNotFoundException: Name jdbc is not bound in this Context 
    this is conpool.jsp    
      

  10.   

    <Resource name="jdbc/temp" scope="Shareable" type="javax.sql.DataSource" 
                removeAbandoned="true" 
                removeAbandonedTimeout="60" 
                logAbandoned="true" 
                url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;SelectMethod=Cursor" 
                driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" 
                username="sa" 
                password="sa"
                maxWait="15000" 
                maxIdle="100" 
                maxActive="50" />
      

  11.   

    谢谢liaoxiaoqi(天崖),配置成功。谢谢这么多好心的朋友。我把我的配置再重复一边,让有需要的朋友参考。
    这里只要改3处文件(2个是TOMCAT\conf下的server.xml和context.xml,1个是自己工程下的web.xml)另外,mikewolf_sky(天狼子) 说的我没有去配。注意:我把数据源改为"jdbc/bn"另外创建了一个ch80的工程来测试的。
    server.xml配置如下:<Context path="/ch80" docBase="ch80" debug="0"                 
    reloadable="true" crossContext="true">   <Resource name="jdbc/bn" scope="Shareable" type="javax.sql.DataSource" 
                removeAbandoned="true" 
                removeAbandonedTimeout="60" 
                logAbandoned="true" 
                url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;SelectMethod=Cursor" 
                driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" 
                username="an" 
                password="an"
                maxWait="15000" 
                maxIdle="100" 
                maxActive="50" />
    <ResourceParams name="jdbc/bn">    
    <parameter>             
    <name>factory</name>                  
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>                     
    </parameter>
      
    <parameter>                      
    <name>driverClassName</name>                               
    <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>                                  
    </parameter>
      
    <parameter>             
    <name>url</name>             
    <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev</value>  
    </parameter> <parameter>     
    <name>username</name>
    <value>an</value>  
    </parameter>
      
    <parameter>     
    <name>password</name>     
    <value>an</value>
    </parameter>
                  
                    
    <parameter>     
    <name>maxActive</name>    
    <value>20</value>
    </parameter>
                  
    <parameter>
    <name>maxIdle</name>    
    <value>10</value>  
    </parameter>
      
    <parameter>        
    <name>maxWait</name>     
    <value>-1</value>   
    </parameter>
            
    </ResourceParams>     
    </Context>
          </Host>context.xml配置如下:(在</Context>上面添加如下代码)
     <ResourceLink
       name="jdbc/bn" 
       type="javax.sql.DataSource" 
       global="jdbc/bn"/>web.xml配置如下:(在</web-app>上面添加如下代码)<resource-ref>
    <description>DB connection</description>
    <res-ref-name>jdbc/bn</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    大功告成!!!
      

  12.   

    tomcat5.0和5.5的语法是不一样的,你可以搜一下。我也碰到过这样的问题