使用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

 package cn.sdut.lah.listener;

 import java.sql.Connection;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import com.mchange.v2.c3p0.ComboPooledDataSource; public class GetConnListener implements ServletContextListener { //启动web应用时,该方法被调用
@Override
public void contextInitialized(ServletContextEvent sce) {
try {
// 取得应用的ServletContext实例
ServletContext application = sce.getServletContext(); // 从配置参数中获取驱动
String driver = application.getInitParameter("driver");
// 从配置参数中获取数据库url
String url = application.getInitParameter("url");
// 从配置参数中获取用户名
String user = application.getInitParameter("user");
// 从配置参数中获取密码
String password = application.getInitParameter("pass"); // 创建连接池实例
ComboPooledDataSource cpds = new ComboPooledDataSource();
// 设置连接池连接数据库所需要的驱动
cpds.setDriverClass(driver);
// 设置连接数据库所需的驱动
cpds.setJdbcUrl(url);
// 设置连接数据库的用户名
cpds.setUser(user);
// 设置连接数据库的密码
cpds.setPassword(password);
// 设置连接池的最大连接数
cpds.setMaxPoolSize(40);
// 设置连接池的最小连接数
cpds.setMinPoolSize(2);
// 设置连接池的初始连接数
cpds.setInitialPoolSize(10);
// 设置连接池的缓存statement最大数
cpds.setMaxStatements(180); // 将DataSource设置为application范围内的属性
application.setAttribute("ds", cpds); } catch (Exception e) {
e.printStackTrace();
} } //关闭web应用
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContext application = sce.getServletContext();
ComboPooledDataSource ds = (ComboPooledDataSource) application
.getAttribute("ds");
try {
Connection conn = ds.getConnection();
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
} } }

在web.xml中配置参数

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param> <context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/javaee</param-value>
</context-param> <context-param>
<param-name>user</param-name>
<param-value>root</param-value>
</context-param> <context-param>
<param-name>pass</param-name>
<param-value>ab123456</param-value>
</context-param> <listener>
<listener-class>cn.sdut.lah.listener.GetConnListener</listener-class>
</listener> </web-app>

通过实现ServletContextListener接口创建数据库连接池(C3P0方式)的更多相关文章

  1. [数据库连接池二]Java数据库连接池--C3P0和JDNI.

    前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...

  2. 数据库连接池(c3p0与druid)

    1.数据库连接池概念 其实就是一个容器(集合),存放数据库连接的容器.当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归 ...

  3. 数据库连接池——C3P0&Druid(快速入门)

    数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...

  4. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...

  5. 数据库连接池 c3p0 druid

    druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!

  6. 数据库连接池 C3p0

    数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...

  7. 数据库连接池——C3P0

    定义: 本质上就是个容器(集合)存放数据库连接的容器.当系统初始化以后,容器被创建,容器中就会申请一些连接对象.当用户来访问的数据库的时候,从容器中取连接对象,用户用完之后归还. 使用方法: 标准接口 ...

  8. 数据库连接池c3p0学习

    这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比 配置文件主要的实现方式有三种: 1.手写代码去加载一个配置文件 创建一个config.properties文件如下: drive ...

  9. 数据库连接池 c3p0 demo 代码和分析

    import java.sql.Connection; import java.sql.SQLException; import java.beans.PropertyVetoException; i ...

随机推荐

  1. poj2186 求有向图G中所有点都能到达的点的数量

    /*题意:有向图,求这样的点的数量:所有点都能到达它.缩点成有向无环图,思:如果该强连通有出度,那么 从该出度出去的边必然回不来(已经缩点了),所以有出度的强连通必然不是.那么是不是所有出度为0的强连 ...

  2. Educational Codeforces Round 50 (Rated for Div. 2) E. Covered Points

    注释上都有解析了,就不写了吧,去重的问题就用set解决,并且呢第i个线段最多和其他线段产生i-1个交点,n^2logn. #include <cmath> #include <cst ...

  3. [vijos1891]学姐的逛街计划

                                                                     学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, d ...

  4. volatile关键字解析&内存模型&并发编程中三概念

    原文链接: http://www.cnblogs.com/dolphin0520/p/3920373.html volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java5之前,它是一个 ...

  5. DRBD+Heratbeat+NFS高可用文件共享存储

    一.概述 .通过ha-log日志可以看出主释放资源,备接管资源. 来自为知笔记(Wiz)

  6. unity3d 摄像机抖动特效

    摄像机抖动特效 在须要的地方调用CameraShake.Shake()方法就能够  

  7. Activity调用isDestroyed()方法报出,java.lang.NoSuchMethodError

    在測试App的过程中,Activity调用了isDestroyed()方法,报出了java.lang.NoSuchMethodError错误. 自己手机MI 2S,版本号4.1.1. 事实上原因就是i ...

  8. SDUTOJ 2475 Power Strings

    <pre class="cpp" name="code">#include<iostream> #include<stdio.h& ...

  9. vue 自定义报警组件

    1.自定义报警组件 Alarm.vue <!-- 报警 组件 --> <template> <div class="alarm"> <!- ...

  10. 异或巧用:Single Number

    异或巧用:Single Number 今天刷leetcode,碰到了到题Single Number.认为解答非常巧妙,故记之... 题目: Given an array of integers, ev ...