有关C3P0汇集数据源的问题

时间:2011-09-23 04:57:11

标签: java hibernate c3p0

我尝试使用池数据源来记录有关数据库连接池的信息,即最大池大小,当前号码。正在使用的连接,繁忙的连接等。我正在使用C3P0Registry来获取池化数据源。

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,Hibernate,C3P0,MySQL

1 个答案:

答案 0 :(得分:2)

尝试阅读PooledDataSource java doc。 http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/PooledDataSource.html

PooledDataSource.getXXXXUser()是监控和管理数据源的正确方法

此界面中的功能仅在

时才会引起您的兴趣
  1. 出于管理原因,您希望密切关注 您的应用程序正在使用的所有连接的数量和状态;

  2. 解决在管理DataSource时遇到的问题,其客户端是泄漏连接的编码不良的应用程序,但是您不允许修复;

  3. 解决基础jdbc驱动程序/ DBMS系统不可靠时可能出现的问题。
  4. 有关javadoc中可用的方法名称的说明。

    请参阅方法名称...部分

    此界面中的许多方法有三种变体:

    1. &LT;方法-名称&gt; DefaultUser()
    2. &LT;方法-名称&gt; (字符串用户名,字符串密码)
    3. &LT;方法-名称&gt; AllUsers的()
    4. 第一个变体使用为默认用户维护的池 - 通过调用no参数getConnection()创建的Connections,第二个变体允许您跟踪通过调用getConnection(用户名,密码)创建的池,以及第三个变体提供聚合信息或对所有池执行操作。