数据连接池(数据源)的配置方法

来源:互联网 发布:vb编程软件 编辑:程序博客网 时间:2024/04/29 22:52
08120170920
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;}}
原创粉丝点击