连接池的实现:
原理:在服务器启动的时候,创建一系列的连接对象(称为数据源);在程序中需要使用连接的时候,直接从数据源中获取一个已经存在的连接;(关闭连接,将当前连接重新放入到数据源中)。
连接池使用的几种核心技术:
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>