你只要Lookup到DataSource,从DataSource中获得连接,并在使用之后关闭它就可以了。不需要再手工控制。
但是必须调用 conn.close()  实际上它并没有关闭与数据库的连接,只是返回空闲的连接到池中。

解决方案 »

  1.   

    但是有些人说tomcat不会帮你管理连接池的哦,要自己写管理,回收策略哦???
      

  2.   

    我用JSP连接sqlserver时需要用连接池,<context>标签内容如下:
    <Context path="/Project" reloadable="true" docBase="/Project">
       <Resource name="jdbc/Project" auth="Container" type="javax.sql.DataSource"/>
       <ResourceParams name="jdbc/Project">
         <parameter>
         <name>factory</name>
           <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
         </parameter>
        <parameter>
         <name>maxActive</name>
            <value>100</value>
         </parameter>
        <parameter>
            <name>maxIdle</name>
            <value>30</value>
        </parameter>
        <parameter>
             <name>maxWait</name>
           <value>10000</value>
         </parameter>
         <parameter>
          <name>username</name>
          <value>sa</value>
         </parameter>
         <parameter>
          <name>password</name>
          <value></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=Project;user=sa;password=;</value>
        </parameter>
    </ResourceParams>
    </Context>
    我用的时tomcat5.0.28,我把上边的代码直接复制到server.xml中的</host>标签上一行,结果运行程序的时候找不到jsp文件;我把上边的context代码去掉后,可以找到文件,但是提示jdbc没有绑定到context。
    我的jsp文件代码如下:
    <%
    out.print("使用连接池连接MS SQL Server 2000<br>");
    out.println("<br>");
    Context ctx=null;
    DataSource ds=null;
    Statement stmt=null;
    ResultSet rs=null;
    Connection con=null;
    ResultSetMetaData md=null;
    try{
    ctx = new InitialContext();
    ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Project");
    con=ds.getConnection();
    stmt=con.createStatement();
    rs=stmt.executeQuery("select * from Test");
    md=rs.getMetaData();
    out.print(md.getColumnLabel(1)+" ");
    out.print(md.getColumnLabel(2)+"<br>");
    while(rs.next()){
    out.print(rs.getInt(1)+" ");
    out.print(rs.getString(2)+"<br>");
    }
    }catch(Exception e){
    out.print(e);
    }finally{
    if(rs!=null)rs.close();
    if(stmt!=null)stmt.close();
    if(con!=null)con.close();
    }
    %>希望各位帮忙,谢谢!
      

  3.   

    没听过上面的说法,
    只要你记得从连接池里取得connection后,一定要自己关掉就行。
    自己写管理?不知怎么写,实现DataSource接口?已经有实现好的拿来用就行