先注明一下,我的Tomcat的版本是5.5,以下是我的server.xml中的配置:
<Context path="/ROOT" docBase="D:\Tomcat 5.5\webapps\ROOT" debug="1" reloadable="true" crossContext="true">
<Resource name="jdbc/conn" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/conn">
<parameter>
<name>factory</name>
<value>org.apache.tomcat.dbcp.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=test</value>
</parameter>
<parameter>
<name>username</name>
<value>1</value>
</parameter>
<parameter>
<name>password</name>
<value>1</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>

解决方案 »

  1.   

    以下是web.xml中的配置:
    <resource-ref>
    <description>connection</description>
    <res-ref-name>jdbc/conn</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    下面是root.xml,我的web文件放在ROOT目录下面:
    <Context displayName="Tomcat Test Application" docBase="D:\Tomcat 5.5\webapps\ROOT" path="/ROOT" privileged="true">
    <ResourceLink name="jdbc/conn" type="javax.sql.DataSource" global="jdbc/conn"/>
    </Context>
      

  2.   

    Driver(三个文件)已经放在common/lib/下了
      

  3.   

    好,我已经准备好接受解决方法。谢谢楼上的各位的答复,继续等待ing
      

  4.   

    不好意思,错了,\conf\Catalina\localhost\myapp.xml,myapp.xml应该是ROOT.xml。
      

  5.   

    你的JDK是1.5版本的吗?另外驱动是什么版本的?
      

  6.   

    <Context **** /> 我认为少了 /
      

  7.   

    不少,我的</Context>在下面,谢谢答复, to drugon(personal):我的JDK版本是1.5,Engine:Apache Tomcat/5.5.5,天啦,都快死掉了!快给我答案吧!
      

  8.   

    还有一个现象是:当我把conf\Catalina\Localhost\ROOT.xml删除掉时,上面的错误没了,就会出现以下的错误:org.apache.jasper.JasperException: Cannot create JDBC driver of class '' for connect URL 'null',请朋友们救救我呀
      

  9.   

    你在jsp或java类里怎样引用数据源的代码贴出来看看
      

  10.   

    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="javax.sql.*"%>
    <%@ page import="javax.naming.*"%>
    <%@ page import="java.sql.*"%>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GBK">
        <title>untitled</title>
      </head>
      <body>
      <%
        DataSource ds=null;
        try{
          InitialContext ctx=new InitialContext();
          Context con=(Context)ctx.lookup("java:comp/env");
    ds=(DataSource)con.lookup("jdbc/conn");

          Connection conn1=ds.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test","1");
       /*   Statement stmt=conn.createStatement();
          ResultSet rs=stmt.executeQuery("select * from db_factory");
          while(rs.next())
          {
            out.print(rs.getString(1));
          }
          rs.close();
          stmt.close();
    */
    conn1.close();
        }
        catch(Exception e)
        {  throw new RuntimeException(e.getMessage());}
      %>
      </body>
    </html>
      

  11.   

    jdbc驱动配置好了吗?
    1、下载Microsoft SQL Server 2000 Service Pack 3a并安装,SQL请选用混和安装模式!!!
    http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&displaylang=zh-cn
    2、下载SQL Server 2000 Driver for JDBC Service Pack 3
    http://www.microsoft.com/downloads/details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en
    3、运行时关闭防火墙
    4.下载jdbc for sql2000
      安装后,找到msbase.jar, mssqlserver.jar,msutil.jar 三个文件
      拷贝到tomcat\common\lib 下面
    5 同时在classpath中也加入%CATALINA%\common\lib\msbase.jar;%CATALINA%\common\lib\msutil.jar;%CATALINA%\common\lib\msslqserver.jar;
      

  12.   

    Name jdbc is not bound in this Context
      

  13.   

    package com.sinbo.DBManager;
    import java.sql.*;
    import javax.sql.*;
    import javax.naming.*;
    import java.io.*;
    import java.util.*;
     public class DBManager1
     {
    Connection conn = null;
    ResultSet rs = null;
    Statement  stmt=null;
    Object obj;
    String sql=null;
    String strUser;
    String strPassword;
      public DBManager1()
      {
      try
      {
    Context initCtx = new InitialContext(); 
    Context ctx = (Context) initCtx.lookup("java:comp/env");
    obj = (Object) ctx.lookup("jdbc/SqlServerDB");

    }
    catch(Exception e) 
    {
    System.out.println(e.getMessage());
    }
      }
      //set user and password
      public void setUserAndPasswd(String user,String passwd)
      {
      this.strUser=user;
      this.strPassword=passwd;
       }
      //----connection
      public Connection getConnection() throws Exception
      {
    javax.sql.DataSource ds = (javax.sql.DataSource)obj; 
      conn = ds.getConnection();
      return conn;
       
      }
      //checkuser
      public boolean UserPass(String username,String password) throws Exception
    {
    conn=getConnection();
    stmt=conn.createStatement();
    sql="SELECT * FROM usert where nick='"+username+"' and password='"+password+"'"; 
    rs=stmt.executeQuery(sql);
    if(rs.next())
    return true;    
    else
    return false;

    }
      //----query------------------
    public ResultSet executeQuery(String sql)throws Exception 
    {
    conn=getConnection();
    stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);
    if(rs==null)
    {
    stmt.close();
    conn.close();
    System.exit(1);
    }

    // stmt.close();
    // conn.close();
    return rs;

    }
    //---Update-------------------
    public void executeUpdate(String sql) throws Exception
    {
    try 
    {
    conn=getConnection();
    Statement stmt = conn.createStatement();
    stmt.executeUpdate(sql);


    catch(SQLException ex) 

    System.out.println(ex.getMessage());
    }
    finally
    {
    if(stmt!=null)
    stmt.close();
    conn.close();
    }

    }
     
     }
      

  14.   

    to  hoggio_1980(南林浪子) :这5项我全做了,还是出现同样的错误!
      

  15.   

    <Context path="/ROOT" docBase="D:\Tomcat 5.5\webapps\ROOT" debug="1" reloadable="true" crossContext="true">这个是你自己加上去的,对不对?如果是你自己加上去的,它可能会出问题,因为webapps下面的ROOT目录是一特别的目录,一般我们在IE地址栏中输入http://localhost:8080的时候,那些出现的东西就是这个目录下面。并且这个目录有它自己的path属性,那就是path="".在Tomcat中5.5的版本好象是在conf/localhost/下面有一个Server.xml的文件,你在这里可以找到有关系统设置ROOT目录的相关参数。如果你想用这个目录,你最好把你加的去掉,在那里面找,然后把那些属性加在系统设置ROOT目录的地方。
      

  16.   

    因为系统设置的那个ROOT目录的Context的操作级别要比你自己设置的高,所以先找到系统的,然后可能会去找你的,也不一定会找你的那个Context。这样有两个Context对应是是一个实际的目录,当然会出错了。
      

  17.   

    楼上的我刚没有找着,但目前有一个现象就是:当我把ROOT.xml文件删除掉时,我的程序就会执行到Connection conn1=ds.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test","1");这句出现错误如下:org.apache.jasper.JasperException: Cannot create JDBC driver of class '' for connect URL 'null',如果ROOT.xml文件存在时,执行到:ds=(DataSource)con.lookup("jdbc/conn");
    这儿就出现错误:org.apache.jasper.JasperException: Name jdbc is not bound in this Context,这说明不要ROOT.xml即ResourceLink去掉时,会找到this context,但这样执行到getConnection时,会出现Cannot create JDBC driver of class '' for connect URL 'null',这好像表明他读取的driverClassName和url的参数为空,但我设置的没有错呀?痛苦的笑着!
      

  18.   

    而且我以前使用的语句是:Connection conn1=ds.getConnection();
    出现错误后,我就把上面这句修改成:Connection conn1=ds.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test","1");
    参数随便改了,也一样出现错误Cannot create JDBC driver of class '' for connect URL 'null'!
      

  19.   

    好!给答案!好了,问题告一段落,问题终于被 我搞定了!谢谢楼上的各位的答复。解决方法共享出来:错误是原来在tomcat 5.5下,他的在server.xml中的设置改成以下就成功了:
    <Context path="/test" docBase="test" debug="0" reloadable="true" crossContext="true">
    <Resource name="jdbc/conn" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000"
    username="1" password="1" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test"/>
    </Context>,即把参数全部放在一个<Resource/>中。再次感谢楼上各位的鼎力相助。给分!