当前位置:Gxlcms >
数据库问题 >
通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
时间:2021-07-01 10:21:17
帮助过:3人阅读
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方式)
标签: