`
dannyhz
  • 浏览: 390156 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

使用c3p0 来查看 当前的连接数

阅读更多

package com.xiangsoft.database.c3p0driver;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.PooledDataSource;

public class DatasourceUtil {

	private String driverClass;

	private String jdbcUrl;

	private String user;

	private String password;

	private String keyHost;

	private int minPoolSize = 5;

	private int maxPoolSize = 20;

	private int acquireIncrement = 5;
	
	private int initialPoolSize = 5;
	
	private int maxIdleTime = 300;

	private int defaultRowPrefetch = 200;

	private int idleConnectionTestPeriod = 30;

	private String preferredTestQuery = "SELECT 1 FROM DUAL";
	
	private int maxConnectionAge = 7200;

	private int maxStatementsPerConnection = 0;
	
	public ComboPooledDataSource dataSource;
	
	private Long readTimeout = 6000L;//120min - 20min
	
	
	public void initDatabase(){
		dataSource = new ComboPooledDataSource();
		
		Properties properties = new Properties();
		properties.setProperty("defaultRowPrefetch", String.valueOf(defaultRowPrefetch));
		//only oracle database use this property
		properties.setProperty("oracle.jdbc.ReadTimeout", String.valueOf(readTimeout * 1000));
		
		dataSource.setProperties(properties);
	
		try {
			driverClass = "com.mysql.jdbc.Driver";
			jdbcUrl = "jdbc:mysql://localhost:3306/quicklink";
			user = "root";
			password = "admin";
			dataSource.setDriverClass(driverClass);
			dataSource.setJdbcUrl(jdbcUrl);
			dataSource.setUser(user);
			dataSource.setPassword(password);
		
			// the settings below are optional -- c3p0 can work with defaults
			dataSource.setInitialPoolSize(initialPoolSize);
			dataSource.setMinPoolSize(minPoolSize);
			dataSource.setMaxPoolSize(maxPoolSize);
			dataSource.setAcquireIncrement(acquireIncrement);
			dataSource.setMaxIdleTime(maxIdleTime);
			dataSource.setIdleConnectionTestPeriod(idleConnectionTestPeriod);
			dataSource.setPreferredTestQuery(preferredTestQuery);
			dataSource.setMaxConnectionAge(maxConnectionAge);
			dataSource.setMaxStatementsPerConnection(maxStatementsPerConnection);
			
		} catch (PropertyVetoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
		
	public Connection getConnection() throws SQLException {
		Connection connection = dataSource.getConnection();
		return connection;
		
	}

	public void cleanup()
	{
		try {
			if (dataSource != null) {
				dataSource.close();
			}
			} catch(Exception e) {
				//LOGGER.error(e);
			}

	}

	public String toString()
	{
		StringBuilder builder = new StringBuilder(super.toString());

		builder.append(",jdbcUrl=").append(jdbcUrl);
		builder.append(",user=").append(user);
		builder.append(",minSize=").append(minPoolSize);
		builder.append(",maxSize=").append(maxPoolSize);

		return builder.toString();
	}
	
	public static void main(String[] args) {
		DatasourceUtil util = new DatasourceUtil();
		util.initDatabase();
		
		util.showConnPoolInfo(util.dataSource);
		
		Connection conn = null;
		try {
			conn = util.getConnection();
			util.showConnPoolInfo(util.dataSource);
			
			conn = util.getConnection();
			conn = util.getConnection();
			conn = util.getConnection();
			conn = util.getConnection();
			util.showConnPoolInfo(util.dataSource);
			
			
			conn = util.getConnection();
			util.showConnPoolInfo(util.dataSource);
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			util.showConnPoolInfo(util.dataSource);
		}
		
		
	}
	
	private static void showConnPoolInfo(ComboPooledDataSource pool){  
        PooledDataSource pds = (PooledDataSource) pool;  
        if(null != pds){  
            try {  
                System.out.println("------------c3p0连接池链接状态--------------");  
                System.out.println("c3p0连接池中 【 总共 】 连接数量:"+pds.getNumConnectionsDefaultUser());  
                System.out.println("c3p0连接池中 【  忙  】 连接数量:"+pds.getNumBusyConnectionsDefaultUser());  
                System.out.println("c3p0连接池中 【 空闲 】 连接数量:"+pds.getNumIdleConnectionsDefaultUser());  
                System.out.println("c3p0连接池中 【未关闭】 连接数量:"+pds.getNumUnclosedOrphanedConnectionsAllUsers());  
            } catch (SQLException e) {  
                System.out.println("c3p0连接池异常!");  
            }  
        }  
    }  

	
}

分享到:
评论

相关推荐

    C3P0 连接池源码

    C3P0提供了JMX(Java Management Extensions)支持,允许开发者通过JMX工具监控连接池的状态,如当前连接数、空闲连接数、借用和归还连接的统计等。 9. **与其他连接池的比较** C3P0与其他连接池(如HikariCP、...

    C3P0连接池技术.zip

    3. 性能监控:通过内置的监控机制,开发者可以获取到连接池的运行状态,如当前连接数、空闲连接数、借用和归还连接的频率等,有助于进行性能调优。 4. 配置灵活性:C3P0提供了丰富的配置选项,如初始化连接数、最大...

    Hibernate 中配置C3P0连接池

    - `hibernate.c3p0.min_size`: 最小连接数,即使连接池中当前没有活动连接,也会保持至少这么多的空闲连接。 - `hibernate.c3p0.timeout`: 连接超时时间(毫秒),超过这个时间未使用的连接将被回收。 - `hibernate....

    c3p0jar包下载、c3p0连接池

    2. **c3p0 jar包**: 使用c3p0连接池,需要引入c3p0的jar包,该包包含了c3p0的所有类和接口,使得我们可以方便地在项目中使用c3p0的功能。 ### c3p0的下载与集成 1. **下载**: c3p0的jar包可以在官方网站或者通过...

    c3p0所需要的JAR

    4. 资源监控:C3P0提供了一套内置的监控系统,可以通过JMX(Java Management Extensions)接口来查看和管理连接池的状态,例如当前连接数、已用连接数、空闲连接数等。 在C3P0的使用中,通常需要引入以下两个JAR...

    c3p0数据连接池

    - **兼容性**: c3p0 提供了兼容 JDBC 驱动管理和 `java.sql.DataSource` 视图的类来获取数据库连接。 - **透明处理**: 对数据源连接和 PreparedStatement 进行透明化处理,使传统驱动和未入池的数据源也能得到统一...

    JDBC连接池C3P0

    C3P0提供了内置的性能监控,可以通过配置启用日志或JMX来查看连接池的状态,包括当前连接数、等待连接的线程数、已关闭的连接数等。 5. **异常处理和故障恢复** C3P0具有自动检测失效连接并重连的功能,如果检测...

    c3p0连接池

    4. **连接池监控**: 提供了Web监控界面和MBean,可以实时查看连接池的状态,包括当前连接数、等待队列长度等信息,有助于问题排查和性能调优。 5. **事务支持**: 支持JDBC的事务管理,可以方便地进行事务控制。 **...

    JDBC利用C3P0数据库连接池连接数据库

    然后,需要创建一个工具类,用于获取数据库连接,工具类中需要使用C3P0的 ComboPooledDataSource 来获取数据库连接。 在使用C3P0数据库连接池连接数据库时,需要首先创建一个C3P0配置文件,配置文件中需要指定...

    c3p0简易配置

    默认值为3,这意味着每当连接池检测到当前连接数低于最小连接数时,会一次性增加3个连接。合理设置此参数可以平衡资源占用与响应速度,避免资源过度消耗或响应延迟。 #### acquireRetryAttempts 定义了在获取连接...

    c3p0数据池jar包完整版

    C3P0提供了MBean(Managed Beans)支持,通过JMX(Java Management Extensions)可以对连接池进行实时监控,查看当前连接池的状态,如活动连接数、空闲连接数等。 6. **扩展性**: C3P0的设计允许开发者自定义...

    c3p0-0.9.5.2.bin.zip

    同时,c3p0还支持JMX(Java Management Extensions),可以通过JMX监控连接池的状态,如当前连接数、空闲连接数等,有助于诊断和优化系统性能。 在c3p0-0.9.5.2.bin.zip中的`c3p0-0.9.5.2.bin.zip.txt`文件,可能是...

    c3p0数据库连接池_java

    C3P0还允许你调整连接池的各种参数,例如最大连接数、最小连接数、测试连接的SQL语句等,以满足应用的需求。 C3P0的使用示例通常涉及从数据源获取连接,执行SQL操作,然后关闭连接。以下是一个简单的示例: ```...

    C3P0 Jar包

    4. 数据库连接池监控:C3P0提供了丰富的监控接口,可以监控连接池的状态,包括当前连接数、空闲连接数、活动连接数等,有助于进行性能调优和问题排查。 5. 支持多种数据库:C3P0不仅支持主流的MySQL、Oracle、...

    java_数据库连接池_c3p0_使用及参数详解_支持重连

    ### Java 数据库连接池 C3P0 使用及参数详解:支持重连 在Java应用程序中,数据库连接池是一项关键的技术,用于管理与数据库的连接,提高应用的性能和响应速度。C3P0是一个开放源代码的JDBC连接池实现,它在内部...

    数据库分页技术-C3p0手动封装

    在使用C3p0时,我们需要配置相关的属性,例如初始化和最大连接数、获取连接超时时间等。 分页的核心在于SQL查询,通常使用LIMIT和OFFSET子句来实现。在MySQL中,LIMIT用于限制返回的结果集数量,OFFSET则用于指定从...

    c3p0-0.9.5.5.zip

    C3P0是一款广泛使用的开源JDBC连接池,它的全称是Comprehensive Connection Pooling Package。这个库的主要功能是提供数据库连接的管理与复用,从而优化数据库的性能和资源利用效率。C3P0 0.9.5.5是其的一个版本,此...

    c3po jar包

    7. **性能监控**:C3P0提供了一套简单的性能监控API,可以通过日志或者JMX(Java Management Extensions)来监控连接池的状态,包括当前连接数、等待队列长度等信息,帮助开发者诊断和优化系统性能。 在实际使用中...

    SSH整合学习笔记之spring与hibernate整合(二)之c3p0

    c3p0提供了许多配置选项,如最小连接数、最大连接数、检查连接的空闲时间等,可以根据实际需求调整以优化性能。 整合Spring和Hibernate时,我们需要在Spring的配置文件中定义数据源,这里就是使用c3p0作为数据源。...

Global site tag (gtag.js) - Google Analytics