博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
阅读量:5117 次
发布时间:2019-06-13

本文共 3256 字,大约阅读时间需要 10 分钟。

使用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     @Override15     public void contextInitialized(ServletContextEvent sce) {16         try {17             // 取得应用的ServletContext实例18             ServletContext application = sce.getServletContext();19             20             // 从配置参数中获取驱动21             String driver = application.getInitParameter("driver");22             // 从配置参数中获取数据库url23             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     @Override59     public void contextDestroyed(ServletContextEvent sce) {60         ServletContext application = sce.getServletContext();61         ComboPooledDataSource ds = (ComboPooledDataSource) application62                 .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 
2
6 7
8
driver
9
com.mysql.jdbc.Driver
10
11 12
13
url
14
jdbc:mysql://localhost:3306/javaee
15
16 17
18
user
19
root
20
21 22
23
pass
24
ab123456
25
36 37
38
cn.sdut.lah.listener.GetConnListener
39
40 41

 

转载于:https://www.cnblogs.com/lahblogs/p/4509088.html

你可能感兴趣的文章
同步代码时忽略maven项目 target目录
查看>>
MVC.NET:提供对字体文件.woff的访问
查看>>
Oracle中包的创建
查看>>
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
Chrome development tools学习笔记(3)
查看>>
软件过程的守护神
查看>>
NAT配置
查看>>
【翻译】Brewer's CAP Theorem CAP定理
查看>>
undefined与null
查看>>
redis总结
查看>>
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...
查看>>
STM32F10x_RTC秒中断
查看>>
[原创]网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍
查看>>