RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Struts>列表

数据库连接池的工作原理

来源: 作者: 时间:2007-08-22 点击:


  类Conn 的设计很简单,如下所示:

Class Conn {
 Private java. sgl .Connection con; //数据库连接对象
 Public Boolean inUse ; //是否被使用
 Public long lastAccess; //最近一次释放该连接的时间
 Public int useCount; // 被使用次数
}

  下面是实现连接池的主要代码:

// 初始化数据库连接池

public static synchronized void FastInitPool()
throws Exception {
 try { Class.forName(driver);
  for (int i=0; i<size; i++) {
   Connection con = createConnection();
   if (con!=null) addConnection(con);
  } } }

// 向连接池对象中添加数据库连接

private static void addConnection(Connection con) {
 if (pool=null||pool1=null) {
  pool=new Vector(size);
  pool1=new Vector(size); }
 pool.addElement(con);
 pool1.addElement("false"); }

// 获取数据库连接

public static synchronized Connection getConn()
throws Exception {
 Connection conn = null;
 try { if (driver = null)
  FastInitPool();
  // 获得一个可用的(空闲的)连接
 .for (int i = 0; i < pool.size(); i++) {
  conn = (Connection)pool.elementAt(i);
  if (pool1.elementAt(i)=="false") {
   pool1.set(i,"true");
   //System.out.println("从连接池中获取第"+(i+1)+"个空闲连接");
   return conn;
  }
 }
 //如果没有可用连接,且已有连接数小于最大连接数限制,则创建并增加一个新连接到连接池
 conn = createConnection();
 pool.addElement(conn);
 pool1.addElement("true");
 // System.out.println(" 所有连接都在使用,在连接池中再创建一个新连接");
}

catch (Exception e) {
 System.err.println(e.getMessage());
 throw new Exception(e.getMessage());
}
return conn; //返回一个有效的新连接
}

public Connection getConnection(String strDriver, String strUrl, String strUserName, String

strPassWord)
throws SQLException{
 try{ Class.forName(strDriver);
  conn = DriverManager.getConnection(strUrl, strUserName, strPassWord); }
 return conn; }

  结束语

  当前Web应用程序广泛采用B/S结构,其并发性决定了多用户同时访问数据库的问题。本文阐述的基于JDBC的数据库连接池技术已成功应用于基于Web的高职教学系统开发中,并建立了数据库连接池实例来说明和证实连接池的访问方法。只有充分运用连接池访问技术,才能提高数据库的访问效率,改善Web应用,从而减少系统开销,大大提高整个Web应用系统的运行效率。

共2页: 上一页 [1] 2 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章