2011-09-23 86 views
4

问题我尝试使用汇总数据源,以记录有关数据库连接池即,最大池大小,当前没有任何信息。正在使用中的连接,繁忙的连接等。我使用C3P0Registry来获取合并的数据源。关于C3P0汇总数据源

PooledDataSource dataSource =null; 
    try{ 
     C3P0Registry.getNumPooledDataSources(); 
     //I am sure that I am using only one data source 
     Iterator<Set> connectionIterator = C3P0Registry.getPooledDataSources().iterator(); 
     dataSource = (PooledDataSource)connectionIterator.next(); 
    }catch (Exception e) { 
    } 

,然后我正在登录所需的信息为:

Logger.write(LoggerConstant.DEBUG, " Connections in use: "+dataSource.getNumConnectionsAllUsers()+" , Busy Connections: "+dataSource.getNumBusyConnectionsAllUsers() +" , Idle Connections: "+ dataSource.getNumIdleConnectionsAllUsers()+" , Unclosed Orphaned Connections: "+ dataSource.getNumUnclosedOrphanedConnectionsAllUsers(), methodName); 

我想知道,如果它的正确的方式来实现我的目标?
加上我有关于什么dataSource.getNumConnectionsAllUsers()和其他功能(我使用)正好返回混乱。 javadoc中没有可用的描述。

是否有任何说明,也可以是教程可在网上从那里我可以学到更多关于这些特殊的功能呢?

环境:Java中,休眠,C3P0,MySQL的

+0

+1 [C3P0文档](http://www.mchange.com/projects/c3p0/index.html)很好,但javadoc在某些领域非常缺乏。我经历了同样的情况,最终只是通过报告方法来完成。我会很感兴趣,看看是否有一个有用的答案。 –

回答

2

尝试读取PooledDataSource Java文档。 http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/PooledDataSource.html

PooledDataSource.getXXXXUser()是显示器的正确方法和管理数据源

在此界面的功能将只是感兴趣,如果

  1. 管理原因你喜欢使所有连接应用程序正在使用的 数量和状态密切跟踪;

  2. 解决在管理客户端编码不良的应用程序泄露Connections但未被允许修复的DataSource时遇到的问题;

  3. 来解决,如果底层JDBC驱动程序/ DBMS系统是不可靠的,可能会出现的问题。 。

有在javadoc的可用方法名描述。

看到方法名称...部分

在此界面中许多方法有三种形式:

  1. <方法名> DefaultUser()
  2. <方法名>(用户名字符串,字符串密码)
  3. <方法名称> AllUsers的()

第一个变体利用为默认用户维护的池 - 通过调用no参数getConnection()创建的连接,第二个变体允许您跟踪通过调用getConnection(用户名,密码)创建的池,第三个变体提供聚合信息或对所有池执行操作。