通过实现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

 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     @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>

 

posted @ 2015-05-17 07:51  N_ll  阅读(696)  评论(0编辑  收藏  举报