2011-09-23 46 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(用戶名,密碼)創建的池,第三個變體提供聚合信息或對所有池執行操作。