1

以下のコードを使用して、最大アクティブ接続数を 1 に設定します。

    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;
}

現在、スレッドを使用して、DB への同時接続数を開きました。以下のコードを使用して、現在アクティブな接続数も出力しました

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

編集:ただし、 max active として 15 または 20 を使用しようとすると、常にそれぞれ 15 または 20 に制限されます。

4

1 に答える 1