2016-10-14 44 views
1

我使用下面的代碼設置爲1,最大活動連接:Tomcat的數據源 - 最大活動連接

ConnectionPool initializePool(DataSource dataSource) { 
    if (!(org.apache.tomcat.jdbc.pool.DataSource.class.isInstance(dataSource))) { 
     return null; 
    } 
    org.apache.tomcat.jdbc.pool.DataSource tomcatDataSource = (org.apache.tomcat.jdbc.pool.DataSource) dataSource; 
    final String poolName = tomcatDataSource.getName(); 
    try { 
     ConnectionPool pool = tomcatDataSource.createPool(); 
     pool.getPoolProperties().setMaxActive(1); 
     pool.getPoolProperties().setInitialSize(1); 
     pool.getPoolProperties().setTestOnBorrow(true); 
     return pool; 
    } catch (SQLException e) { 
     logger.info(String.format(" !--! creation of pool failed for %s", poolName), e); 
    } 
    return null; 
} 

現在使用線程,我已經打開到數據庫的併發連接數。我還使用下面列出的代碼打印出當前活動的連接數

System.out.println("Current Active Connections = " + ((org.apache.tomcat.jdbc.pool.DataSource) datasource).getActive()); 
System.out.println("Max Active Connections = " + ((org.apache.tomcat.jdbc.pool.DataSource) datasource).getMaxActive()); 

我看到類似於下面的結果。活動連接顯示爲多於1.但是,我想將最大活動連接限制爲1.是否還有其他任何需要設置的參數?

當前活動連接= 9

最大活動連接= 1

編輯:然而,當我嘗試用15或20爲max活性,它總是分別限制在15或20。

回答

1

試着用了maxidle和minIdle

ConnectionPool pool = tomcatDataSource.createPool(); 
pool.getPoolProperties().setMaxActive(1); 
pool.getPoolProperties().setInitialSize(1); 
pool.getPoolProperties().setMaxIdle(1); 
pool.getPoolProperties().setMinIdle(1); 
pool.getPoolProperties().setTestOnBorrow(true); 
+0

感謝@Issam。我試過了,但它是一樣的 –