通过实现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
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方式)的更多相关文章
- [数据库连接池二]Java数据库连接池--C3P0和JDNI.
前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...
- 数据库连接池(c3p0与druid)
1.数据库连接池概念 其实就是一个容器(集合),存放数据库连接的容器.当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归 ...
- 数据库连接池——C3P0&Druid(快速入门)
数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...
- 数据库连接JDBC和数据库连接池C3P0自定义的java封装类
数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...
- 数据库连接池 c3p0 druid
druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!
- 数据库连接池 C3p0
数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...
- 数据库连接池——C3P0
定义: 本质上就是个容器(集合)存放数据库连接的容器.当系统初始化以后,容器被创建,容器中就会申请一些连接对象.当用户来访问的数据库的时候,从容器中取连接对象,用户用完之后归还. 使用方法: 标准接口 ...
- 数据库连接池c3p0学习
这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比 配置文件主要的实现方式有三种: 1.手写代码去加载一个配置文件 创建一个config.properties文件如下: drive ...
- 数据库连接池 c3p0 demo 代码和分析
import java.sql.Connection; import java.sql.SQLException; import java.beans.PropertyVetoException; i ...
随机推荐
- ESI+varnish页面片段缓存
对于片段缓存,业界有成熟的解决方案,还有一个所谓的W3C标准:ESI(Edge Side Include) . ESI本身没有什么,只是一个XML的标签集合.ESI和SSI(Server Side I ...
- linux 安装报错:pkg-config not found
linux 安装报错:pkg-config not found 使用编译安装时,在执行./configure时报如下错误: ... ... checking for pkg-config... no ...
- python学习之 -- 数据序列化
json / pickle 数据序列化 序列化定义:把变量从内存中变成可存储或传输的过程称为序列化.反序列化:把变量内容从序列化的对象重新读到内存里称为反序列胡. 序列化模块之--pickle使用注意 ...
- com.sun.xxx.utils不存在问题的解决
com.sun.org.apache.xml.internal.security.utils does not exist问题的解决 在网上找个很多的答案,但我的问题没有解决,睡一晚上后,被我误打误撞 ...
- Meteor在手机上运行
在本章中,我们将学习如何在Android设备上运行你的应用程序.最近Meteor刚刚添加此功能适用于Windows操作系统,所以我们需要更新 Meteor 应用到 1.3测试版. 注 在写的时候本教程 ...
- hash_map与unordered_map区别
http://blog.csdn.net/blues1021/article/details/45054159
- [转]图解eclipse 查看原始类出现The jar file rt.jar has no source attachment
原文:http://blog.csdn.net/u011514810/article/details/53196371 ---------------------------------------- ...
- [Angular] Communicate Between Components Using Angular Dependency Injection
Allow more than one child component of the same type. Allow child components to be placed within the ...
- 视频录制软件&远程支持软件
视频录制软件 软件名:SCREEN2SWF 录制完成后,可以剪辑: 工程文件,需要保存为svp文件:将视频文件保存为.exe self play 文件,或者.swf flash 文件. 远程支持,远程 ...
- 释怀我的诺亚尔 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco)
释怀我的诺亚尔 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco) 最近,需要搭建一个新项目,在需求分析时确定数据库中需要创建多个存储过程.所以如果还是用原来E ...