通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
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 >
通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
标签:
查看更多关于通过实现ServletContextListener接口创建数据库连接池(C3P0方式)的详细内容...
阅读:28次