zoukankan      html  css  js  c++  java
  • JDBC数据源连接池(2)---C3P0

    我们接着《JDBC数据源连接池(1)---DBCP》继续介绍数据源连接池。

    首先,在Web项目的WebContent--->WEB-INF--->lib文件夹中添加C3P0的jar包。

    其次,编写C3P0的xml配置文件c3p0-config.xml ,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
        <default-config>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/itszt2</property>
            <property name="user">root</property>
            <property name="password">2017</property>
            <property name="automaticTestTable">con_test</property>
            <property name="checkoutTimeout">30000</property>
            <property name="idleConnectionTestPeriod">30</property>
            <property name="initialPoolSize">10</property>
            <property name="maxIdleTime">30</property>
            <property name="maxPoolSize">100</property>
            <property name="minPoolSize">10</property>
            <property name="maxStatements">200</property>
            <user-overrides user="test-user">
                <property name="maxPoolSize">10</property>
                <property name="minPoolSize">1</property>
                <property name="maxStatements">0</property>
            </user-overrides>
        </default-config> 
    </c3p0-config>
    

    再次,编写Util_3_JDBC_C3P0工具类,代码如下:

    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    /**
     * C3P0数据源连接池
     */
    public abstract class Util_3_JDBC_C3P0 {
        private static DataSource dataSource=null;
        //注册mysql驱动
        static {
            try {
                dataSource =new ComboPooledDataSource();
            } catch (Exception e) {
                throw new RuntimeException("数据源连接池失败!");
            }
        }
        /**
         * 打开与数据库的连接
         * @return 一个连接对象
         */
        public static Connection openConnection(){
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
        //释放资源
        public static void release(Connection connection, Statement statement, ResultSet resultSet){
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    最后,我们在com.itszt.demo文件夹中的LoginServlet.java的Servlet文件中,将产生Connection对象的方式修改为C3P0连接池方式即可。

    通常情况下,C3P0数据源连接池效率一般要高于DBCP。

  • 相关阅读:
    minicap编译示例
    uniapp H5项目中使用腾讯地图sdk
    腾讯地图打车乘客端小车平滑移动-安卓篇
    地图定位打卡功能示例
    腾讯位置服务个性化图层创建及发布
    腾讯位置服务GPS轨迹回放
    使用腾讯地图实现汽车沿轨迹行驶功能
    地图GPS轨迹录制
    腾讯地图实现微信小程序地图定位教程
    基于腾讯地图定位组件实现周边POI远近排序分布图
  • 原文地址:https://www.cnblogs.com/lizhangyong/p/8117402.html
Copyright © 2011-2022 走看看