From 69b5f8af243581fd5606e905da1494ee37faa64f Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Mon, 10 May 2010 09:20:07 +0000 Subject: [PATCH] [LMS-1531] enable to configure maxIdle and maxActive properties of default DataSourceFactory SVN: 15862 --- .../generic/shared/DataSourceProvider.java | 2 + .../DatabaseConfigurationContext.java | 43 ++++++++++++++++--- .../cisd/dbmigration/IDataSourceFactory.java | 15 +++++++ .../dataaccess/db/SqlUnitMigrationTest.java | 12 +++++- 4 files changed, 64 insertions(+), 8 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSourceProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSourceProvider.java index 9eab465b470..ac339087a62 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSourceProvider.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSourceProvider.java @@ -47,6 +47,8 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.utils.PropertyParametersUtil. * my-data-source-1.basicDatabaseName = my-database-1 * my-data-source-1.databaseKind = dev * my-data-source-1.scriptFolder = sql + * my-data-source-1.maxIdle = 50 + * my-data-source-1.maxActive = 50 * * # Configure data source my-data-source-2 * my-data-source-2.version-holder-class = ch.example.databases.MyDatabase2VersionHolder diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java index 4487019d438..4a4c9097cd4 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java @@ -40,10 +40,14 @@ public class DatabaseConfigurationContext implements DisposableBean { /** @see GenericObjectPool#DEFAULT_MAX_ACTIVE */ - private final int MAX_ACTIVE = 20; + private final int DEFAULT_MAX_ACTIVE = 20; /** @see GenericObjectPool#DEFAULT_MAX_IDLE */ - private final int MAX_IDLE = MAX_ACTIVE; + private final int DEFAULT_MAX_IDLE = DEFAULT_MAX_ACTIVE; + + private int maxIdle = DEFAULT_MAX_IDLE; + + private int maxActive = DEFAULT_MAX_ACTIVE; // // IDataSourceFactory @@ -57,10 +61,20 @@ public class DatabaseConfigurationContext implements DisposableBean dataSource.setUrl(url); dataSource.setUsername(owner); dataSource.setPassword(password); - dataSource.setMaxIdle(MAX_IDLE); - dataSource.setMaxActive(MAX_ACTIVE); + dataSource.setMaxIdle(maxIdle); + dataSource.setMaxActive(maxActive); return dataSource; } + + public void setMaxIdle(int maxIdle) + { + this.maxIdle = maxIdle; + } + + public void setMaxActive(int maxActive) + { + this.maxActive = maxActive; + } } private ISequenceNameMapper sequenceNameMapper; @@ -110,9 +124,9 @@ public class DatabaseConfigurationContext implements DisposableBean setSequenceUpdateNeeded(true); } - public final void setDataSourceFactory(final IDataSourceFactory dataSourceFactory) + public final void initDataSourceFactory(final IDataSourceFactory factory) { - this.dataSourceFactory = dataSourceFactory; + this.dataSourceFactory = factory; } private final static void closeConnection(final DataSource dataSource) @@ -419,6 +433,23 @@ public class DatabaseConfigurationContext implements DisposableBean } } + /** + * Sets the maximum number of idle connections in the pool (default is 20). + */ + public void setMaxIdle(int maxIdle) + { + this.dataSourceFactory.setMaxIdle(maxIdle); + } + + /** + * Sets the maximum number of active connections that can be allocated at the same time (default + * is 20). + */ + public void setMaxActive(int maxActive) + { + this.dataSourceFactory.setMaxActive(maxActive); + } + /** * Returns the URL of the database server which allows to create a new database. * diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDataSourceFactory.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDataSourceFactory.java index 70d4c850bd4..39d73c62e4e 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDataSourceFactory.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDataSourceFactory.java @@ -18,6 +18,9 @@ package ch.systemsx.cisd.dbmigration; import javax.sql.DataSource; +import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.pool.impl.GenericObjectPool; + /** * Factory for a {@link DataSource}. * @@ -29,4 +32,16 @@ public interface IDataSourceFactory * Creates a data source for the specified database credentials. */ public DataSource createDataSource(String driver, String url, String owner, String password); + + /** + * @see BasicDataSource#setMaxIdle(int) + * @see GenericObjectPool#DEFAULT_MAX_IDLE + */ + public void setMaxIdle(int maxIdle); + + /** + * @see BasicDataSource#setMaxActive(int) + * @see GenericObjectPool#DEFAULT_MAX_ACTIVE + */ + public void setMaxActive(int maxActive); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SqlUnitMigrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SqlUnitMigrationTest.java index 485fc0d8a9a..3c73475646b 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SqlUnitMigrationTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SqlUnitMigrationTest.java @@ -166,6 +166,14 @@ public final class SqlUnitMigrationTest { return new MyDataSource(driver, url, owner, password); } + + public void setMaxActive(int maxActive) + { + } + + public void setMaxIdle(int maxIdle) + { + } }; @BeforeClass(alwaysRun = true) @@ -218,7 +226,7 @@ public final class SqlUnitMigrationTest try { configurationContext.setCreateFromScratch(true); - configurationContext.setDataSourceFactory(DATA_SOURCE_FACTORY); + configurationContext.initDataSourceFactory(DATA_SOURCE_FACTORY); configurationContext.setScriptFolder(getTestDataFolder(configurationContext)); DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider( configurationContext, databaseVersion); @@ -316,7 +324,7 @@ public final class SqlUnitMigrationTest final DatabaseConfigurationContext configurationContext = DatabaseCreationUtil.createDatabaseConfigurationContext(databaseKind); configurationContext.setCreateFromScratch(true); - configurationContext.setDataSourceFactory(DATA_SOURCE_FACTORY); + configurationContext.initDataSourceFactory(DATA_SOURCE_FACTORY); return configurationContext; } -- GitLab