本文共 2614 字,大约阅读时间需要 8 分钟。
081201709201、为什么需要连接池?因为打开和关闭Connection需要耗费时间和内存开销2、连接池常见种类: 1)、dbcp(tomcat容器内部支持,tomcat-dbcp.jar已经存在,不需要手工导入) 2)、druid(阿里)[需要导入druid-1.1.3.jar包] 3)、cp30(开源)3、配置连接池的主要参数:[具体见context.xml文件] 1)、最小连接数[数据库一直保持的Connection对象数目] 2)、初始化连接数[创建连接池时,预先初始化的Connection对象数目] 3)、最大连接数[连接池能容纳的最大Connection对象数目,超过则放在等待队列中,连接池的并发量] 4)、最大等待时间[当内有可用连接,连接等待的最大时间] 5)、最大空闲连接数[连接池内空闲的最大Connection对象数目](针对dbcp数据源) WEB-INF/web.xml ${catalina.base}/conf/web.xml package com.tiger.datasource;import java.sql.*;import javax.naming.*;import javax.sql.DataSource;/** * tomcat自带支持dbcp数据连接池 * @author tiger * @time 2017年9月20日 */public class Mydbcp { private static DataSource ds = null; /** * 注册 */ static { try { Context initContext=new InitialContext(); /** * lookup表示寻找容器的资源 * java:comp/env/--》表示在当前的Web环境的上下文(Context对象) * jdbc/databsesName--》根据JNDI命名 */ ds = (DataSource) initContext.lookup("java:comp/env/jdbc/t_order"); } catch (NamingException e) { e.printStackTrace(); } } /** * 获取连接池对象 * @return */ public Connection getConnection() { Connection conn=null; try { conn=ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); }finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return conn; }}package com.tiger.datasource;import java.sql.*;import javax.naming.*;import com.alibaba.druid.pool.DruidDataSource;/** * durid数据连接池 * @author tiger * @time 2017年9月20日 */public class Mydurid { private static DruidDataSource ds = null; /** * 注册 */ static { try { Context initContext=new InitialContext(); /** * lookup表示寻找容器的资源 * java:comp/env/--》表示在当前的Web环境的上下文(Context对象) * jdbc/databsesName--》根据JNDI命名 */ ds = (DruidDataSource) initContext.lookup("java:comp/env/jdbc/MysqlDataSource"); } catch (NamingException e) { e.printStackTrace(); } } /** * 获取连接池对象 * @return */ public Connection getConnection() { Connection conn=null; try { conn=ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); }finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return conn; } /** * 判断是否连接成功 * @return */ public boolean isConnection() { boolean ok=false; Connection conn=null; try { conn=ds.getConnection(); ok=!conn.isClosed(); } catch (SQLException e) { e.printStackTrace(); }finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return ok; }}
转载地址:http://ajeof.baihongyu.com/