2011-08-13 14 views
1

Webアプリケーションのランタイムレポートを実装していますが、これはc3p0のComboPooledDataSourceを使用しています。私はプログラム的に今までプール内にあった接続の最大数を取得する方法があるのだろうかと思います。 ThreadPoolExecutor.getLargestPoolSize()と同じ効果があります。c3p0 ComboPooledDataSourceは最大プールサイズを報告しますか?

ComboPooledDataSourceにいくつかの報告方法がありますが、このようなものは見つかりませんでした。これは、(意味のある)c3p0 javadocsがないようには見えませんでした。

答えて

0

APIを調べて何も見つかりませんでした。私の簡単な回避策は次のとおりです。

static final ComboPooledDataSource dataSource = new ComboPooledDataSource(); 

static volatile int largestPoolSize = 0; 

public static Connection getConnection() throws SQLException { 
    Connection connection = dataSource.getConnection(); 
    updateLargestPoolSize(); 
    return connection; 
} 

private static void updateLargestPoolSize() throws SQLException { 
    int numConnections = dataSource.getNumConnections(); 
    if (numConnections > largestPoolSize) { 
     largestPoolSize = numConnections; 
    } 
} 

誰かがもっと洗練されたものを提案できれば、投稿してください。

関連する問題