连接池的实现:

原理:在服务器启动的时候,创建一系列的连接对象(称为数据源);在程序中需要使用连接的时候,直接从数据源中获取一个已经存在的连接;(关闭连接,将当前连接重新放入到数据源中)。

连接池使用的几种核心技术:

1. 数据源(javax.sql.DataSource)(作用:用来存放连接)
2. JNDI(java目录命名对象)(作用:通过树形节点,来获取一个数据源)

使用连接池技术步骤:

1. 在Tomcat的conf目录中找到context.xml文件,配置连接池信息。
或者
将context.xml配置文件,存放在META-INF目录下。

2. 将sqljdbc.jar驱动,放在tomcat的lib目录中。

3. 在程序中使用JNDI技术,来查找当前配置的数据源。
4. 从数据源获取连接。
(注意:不能使用普通Java程序来测试连接即需要启动服务器)

连接的关闭并不是通常的关闭,而是把没有用的连接再吃放入连接池中

 

代码实例:

import java.sql.Connection;

import javax.naming.Context;

import javax.naming.InitialContext;
import javax.sql.DataSource;

/**

 *
 * 高效率的获取连接
 *
 *
 */
public class DBUtil {

 private static DataSource ds;

 
 //静态语句块,最先执行,并且只会执行一次
 static{
  try {
   //1. 创建JNDI的对象
   Context cxt = new InitialContext();
   
   //2. 获取数据源
   ds = (DataSource)cxt.lookup("java:comp/env/jdbc/studentDB");//jdbc/studentDB 是content.xml 文件中配置值的属性值 java:comp/env 值不能变 是固定的
  } catch (Exception e) {
   e.printStackTrace();
  }  
 }
 
 /**
  *
  * 使用连接池来获取连接
  *
  * @return
  */
 public static Connection getConn(){
  
  try {
   //3. 从数据源中获取连接
   return ds.getConnection();
  
  } catch (Exception e) {
   e.printStackTrace();
  }
  
  return null;
 }
 
}
 

content.xml 的配置

<!-- The contents of this file will be loaded for each web application -->

<Context>
 <Resource name="jdbc/studentDB"
      type="javax.sql.DataSource"  数据类型    maxActive="0"  最大连接数量 为0表示没有限制
      maxIdle="30"  空闲连接的最小数目   maxWait="10000" 最长的等待时间,-1 表示永久等待 可用来设置系统开放的时间和长度

 username="sa" password="123456" initialSize="50"   初始的连接数

      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"    指定JDBC驱动程序类名
      url="jdbc:sqlserver://localhost:1433;DatabaseName=studentDB" /> 指定连接数据库的URL
</Context>