当前位置: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方式)

标签:

人气教程排行