server.xml
        <Context path="/yanhao" docBase="yanhao" reloadable="true" debug="0" crossContext="true">
          <Resource name="jdbc/yanhaoDB" auth="Container" type="javax.sql.DataSource"/>
          <ResourceParams name="jdbc/yanhaoDB">
            <parameter>
              <name>factory</name>
              <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </parameter>
            <parameter>
              <name>url</name>
              <value>jdbc:microsoft:sqlserver://192.1.1.33:1433;DatabaseName=Great Wall</value>
            </parameter>
            <parameter>
              <name>maxIdle</name>
              <value>20</value>
            </parameter>
            <parameter>
              <name>maxActive</name>
              <value>0</value>
            </parameter>
            <parameter>
              <name>driverClassName</name>
              <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
            </parameter>
            <parameter>
              <name>maxWait</name>
              <value>5000</value>
            </parameter>
            <parameter>
              <name>removeAbandoned</name>
              <value>true</value>
            </parameter>
            <parameter>
              <name>user</name>
              <value>sa</value>
            </parameter>
            <parameter>
              <name>password</name>
              <value></value>
            </parameter>
            <parameter>
              <name>logAbandoned</name>
              <value>true</value>
            </parameter>
            <parameter>
              <name>removeAbandonedTimeout</name>
              <value>60</value>
            </parameter>
          </ResourceParams>
        </Context>web.xml
  <resource-ref>
    <description>connectDB test</description>
    <res-ref-name>jdbc/yanhaoDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>jsp
    System.out.println("hello");
    Context initContext = new InitialContext();
    System.out.println("hello2");
    Context envContext = (Context) initContext.lookup("java:/comp/env/");
    System.out.println("hello3");
    DataSource ds = (DataSource) envContext.lookup("jdbc/yanhaoDB");
    System.out.println("hello4");
    if (ds != null){
      System.out.println("ds is not null");
    }
    conn = ds.getConnection();
    System.out.println("hello5");
执行到hello3就出错

解决方案 »

  1.   

    Context envContext = (Context) initContext.lookup("java:/comp/env/");
    这句是不是有问题呀?
    Context envContext = (Context) initContext.lookup("java:comp/env");好象应该是这样的。
      

  2.   

    给你一个查找数据源获得连接的工具类:
    package cc.tangchao.hq;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/hq"); 
    return ds.getConnection();
    }
    catch(SQLException e)
    {
    throw e;
    }
    catch(NamingException e)
    {
          throw e;
    }

    }}
      

  3.   

    哈哈,我自己找了找资料,也配置好了tomcat的连接池,配置成功了mysql,oracle,mssql的连接池。其实不难。