通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
使用Listener步骤
1. 定义Listener实现类
2. 在web.xml中配置(或使用Annotation)
使用C3P0方式创建数据库连接池需要添加的jar包
1.c3p0-0.9.5.jar
2.c3p0-oracle-thin-extras-0.9.5.jar
3.mchange-commons-java-0.2.9.jar
1 package cn.sdut.lah.listener; 2 3 import java.sql.Connection; 4 import javax.servlet.ServletContext; 5 import javax.servlet.ServletContextEvent; 6 import javax.servlet.ServletContextListener; 7 8 import com.mchange.v2.c3p0.ComboPooledDataSource; 9 10 11 public class GetConnListener implements ServletContextListener { 12 13 //启动web应用时,该方法被调用 14 @Override 15 public void contextInitialized(ServletContextEvent sce) { 16 try { 17 // 取得应用的ServletContext实例 18 ServletContext application = sce.getServletContext(); 19 20 // 从配置参数中获取驱动 21 String driver = application.getInitParameter("driver"); 22 // 从配置参数中获取数据库url 23 String url = application.getInitParameter("url"); 24 // 从配置参数中获取用户名 25 String user = application.getInitParameter("user"); 26 // 从配置参数中获取密码 27 String password = application.getInitParameter("pass"); 28 29 // 创建连接池实例 30 ComboPooledDataSource cpds = new ComboPooledDataSource(); 31 // 设置连接池连接数据库所需要的驱动 32 cpds.setDriverClass(driver); 33 // 设置连接数据库所需的驱动 34 cpds.setJdbcUrl(url); 35 // 设置连接数据库的用户名 36 cpds.setUser(user); 37 // 设置连接数据库的密码 38 cpds.setPassword(password); 39 // 设置连接池的最大连接数 40 cpds.setMaxPoolSize(40); 41 // 设置连接池的最小连接数 42 cpds.setMinPoolSize(2); 43 // 设置连接池的初始连接数 44 cpds.setInitialPoolSize(10); 45 // 设置连接池的缓存statement最大数 46 cpds.setMaxStatements(180); 47 48 // 将DataSource设置为application范围内的属性 49 application.setAttribute("ds", cpds); 50 51 } catch (Exception e) { 52 e.printStackTrace(); 53 } 54 55 } 56 57 //关闭web应用 58 @Override 59 public void contextDestroyed(ServletContextEvent sce) { 60 ServletContext application = sce.getServletContext(); 61 ComboPooledDataSource ds = (ComboPooledDataSource) application 62 .getAttribute("ds"); 63 try { 64 Connection conn = ds.getConnection(); 65 if (conn != null) { 66 conn.close(); 67 } 68 } catch (Exception e) { 69 e.printStackTrace(); 70 } 71 72 } 73 74 }
在web.xml中配置参数
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="3.0" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 6 7 <context-param> 8 <param-name>driver</param-name> 9 <param-value>com.mysql.jdbc.Driver</param-value> 10 </context-param> 11 12 <context-param> 13 <param-name>url</param-name> 14 <param-value>jdbc:mysql://localhost:3306/javaee</param-value> 15 </context-param> 16 17 <context-param> 18 <param-name>user</param-name> 19 <param-value>root</param-value> 20 </context-param> 21 22 <context-param> 23 <param-name>pass</param-name> 24 <param-value>ab123456</param-value> 25 </context-param> 36 37 <listener> 38 <listener-class>cn.sdut.lah.listener.GetConnListener</listener-class> 39 </listener> 40 41 </web-app>
转载于:https://www.cnblogs.com/lahblogs/p/4509088.html
通过实现ServletContextListener接口创建数据库连接池(C3P0方式)相关推荐
- c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用
原标题:数据库连接池c3p0的使用 来源:java联盟 https://mp.weixin.qq.com/s/5Tbkf8dVFfH8AvtqWl-7Xg 程序员共读整理发布,转载请联系作者获得授权 ...
- Java数据库连接池c3p0和druid
目录 一.举例解释连接池 二.c3p0 三.druid 一.举例解释连接池 一直用jdbc的我突然发现一个好东西,那就是连接池,举一个不恰当的例子来说说jdbc和连接池的区别 比如有一家餐馆,如果是j ...
- Java创建线程池的方式
Java创建线程池的方式 文章目录 Java创建线程池的方式 一.通过Executors工厂方法创建 1.Executors.newSingleThreadExecutor() 2.Executors ...
- 数据库连接池 C3p0
数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...
- 数据库连接池-c3p0
一.简介 C3P0是一JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.使用它的开源项目有Hibernate.Spring等. c3p0与dbcp区别: dbcp ...
- 数据库连接池——C3P0:数据库连接池技术
数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接 ...
- 数据库连接池C3P0详细介绍
数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的 ...
- java通过数据库连接池的方式连接数据库(C3P0)
数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏 ...
- 数据库连接池c3p0数据库连接池
文章目录 1.前提准备: 1.1创建数据库 1.2创建实体类对象 1.3 JDBC工具类 2.基于jdbc工具类将数据封装到实体类中 3.c3p0连接池的使用 3.1c3p0的使用步骤 3.2创建项目 ...
最新文章
- Silverlight 3发布新版3.0.50106.0
- Openssl rand命令
- hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地
- 网管日志-06.08.18
- 聊天秒回的人都是生命之光 诉言网
- 利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件
- ssl1217-删边【图论,dfs】
- mysql 递归查找父节点_MYSQL递归查询所有父节点
- html图片拼接出现留白,关于img标签周围留白的问题
- 四川传媒学院计算机应用技术专业,2017年四川传媒学院开设哪些专业(高职/专科)...
- MySQL学习笔记十七:复制特性
- Linux内核源代码分析——可执行文件header处理(二进制文件读写范例,写DUL工具入门指引)...
- java的path含义_java中path和CLASSPATH的配置和意义解析
- 用户密码的存储与密码传输
- 技能系统(Unity 3D)——学习笔记(三)
- 红米android如何把电池百分比,红米Note4电池怎么显示百分比?简单两步即可轻松搞定!...
- 蓝桥杯 算法提高-求最大值(dp基础/类01背包+滚动数组)
- Java 学习 if循环 使用Scanner收集你的身高体重,并计算出你的BMI值是多少BMI的计算公式是 体重(kg) / (身高*身高)
- JDK源代码以及200多部软件著作中出现的以连字符构造的1011个合成词
- 在react框架中实现打印过程中踩的坑
热门文章
- labelImg标注工具(win10安装)
- OpenCV基本线条操作
- Linux转到Server服务,Linux下安装telnet-server服务
- ncl批量处理多个nc文件_Python办公自动化批量处理文件,一学就会
- 让我们了解下什么是智能客服(问答)
- [自动调参]深度学习模型的超参数自动化调优详解
- 用scikit-learn和pandas实现线性回归
- git ssh配置完后拉取代码_二、windows下使用git拉取github上的项目(通过设置ssh key方式)...
- mysql学习day01
- android各版本的sdk区别