池连接碰到的一个问题

我用weblogic + jbuilder + mssqlsever2000 采用池联接。我们的JDBC联系数不断在增加(根我判断,是因为我用完一个方法以后,这个连接还是标识为忙。)。但是我已经对它作了释放处理了,不过还是没有用啊。

我从中抽出一部份代码如下

package com.csbook.documentsystem;

import javax.naming.*;

import javax.sql.*;

import java.io.*;

import java.sql.*;

import java.util.*;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.*;

public class Vistit {

  Context ctx = null;

  DataSource ds = null;

  SysLog log = null;

  ChangeEncoding ce = null;

//构造函数

  public Vistit() {

    //从连接池中获取数据库连接

    try {

      ctx = new InitialContext();

      ds = (DataSource) ctx.lookup("MyDataSource");

    }

    catch (NamingException e) {

      e.printStackTrace();

    }

    // 建立一个日志类的实例

    log = new SysLog();

  }

  public void addInFactoryReg(String no, String name, String company,

                              String people, String reason, String certif) {

    Connection con = null;

    PreparedStatement ps = null;

    String temptime = "";

    String intime = "";

    //temptime = TimeString.getNowTime("HH:mm:ss");

    //intime =temptime.substring(8);

    //System.out.println("company"+company);

    try {

      StringTokenizer st = null;

      ArrayList temp = getTemp();

      Object data[] = temp.toArray();

      String card_number = "";

      System.out.println("data.length" + data.length);

      for (int i = 0; i < data.length; i++) {

        st = new StringTokenizer((String) data[i]);

        card_number = ce.changeCharset(st.nextToken());

        int card_no = getNoCount("card", "card_no");

        card_no++;

        addInFactoryReg(card_no, no, card_number);

        changeState(card_number);

      }

      //String sqlInsert = "insert into visit(visit_no,visit_mark,visit_name,visit_company,visit_reason,visit_certif,visit_intime) values (" +no+ "," +mark+ "," +name+ "," +company+ "," +reason+ "," +certif+ "," +intime+ ")";

      // String sqlInsert = "insert into visit(visit_no,visit_mark,visit_name,visit_company,visit_peopleCount,visit_reason,visit_certif,visit_intime) values (?,?,?,?,?,?,?,'" +intime+ "')";

      String sqlInsert = "insert into visit(visit_no,visit_name,visit_company,visit_peopleCount,visit_reason,visit_certif) values (?,?,?,?,?,?)";

      con = ds.getConnection();

      ps = con.prepareStatement(sqlInsert);

      ps.setString(1, no);

      ps.setString(2, name);

      ps.setString(3, ce.changeCharset(company));

      ps.setString(4, people);

      ps.setString(5, ce.changeCharset(reason));

      ps.setString(6, certif);

      //System.out.println("sqlInsert" + sqlInsert);

      //System.out.println("no" + "visit_no");

      ps.executeUpdate();

      delData();

    }

    catch (Exception e) {

      e.printStackTrace();

    }

    finally {

      Close.connnectionClose(con);

      Close.prepareStatementClose(ps);

    }

  }

package com.csbook.documentsystem;

import javax.sql.*;

import java.sql.*;

public class Close {

  public void close(){

  }

  public static void connnectionClose(Connection con){

  if (con != null)

    try {

      con.close();

    }

   catch (SQLException ignore) {}

}

public static void  prepareStatementClose(PreparedStatement ps){

  if(ps != null)

    try{

      ps.close();

    }

  catch(SQLException e) {}

}

public static void resultSetClose(ResultSet rs){

  if(rs != null){

    try{

      rs.close();

    }

    catch(SQLException e){}

  }

}