You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2006/09/26 14:09:05 UTC
svn commit: r450012 - in
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker:
accesslayer/ConnectionFactoryDBCPImpl.java
accesslayer/ConnectionFactoryPooledImpl.java
util/pooling/PoolConfiguration.java
Author: arminw
Date: Tue Sep 26 05:09:05 2006
New Revision: 450012
URL: http://svn.apache.org/viewvc?view=rev&rev=450012
Log:
add support for property 'initialSize' (connection-pool size at startup)
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryDBCPImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/pooling/PoolConfiguration.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryDBCPImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryDBCPImpl.java?view=diff&rev=450012&r1=450011&r2=450012
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryDBCPImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryDBCPImpl.java Tue Sep 26 05:09:05 2006
@@ -61,6 +61,7 @@
public static final String PARAM_NAME_UNWRAP_ALLOWED = "accessToUnderlyingConnectionAllowed";
public static final String PARAM_NAME_POOL_STATEMENTS = "poolPreparedStatements";
public static final String PARAM_NAME_STATEMENT_POOL_MAX_TOTAL = "maxOpenPreparedStatements";
+ public static final String PARAM_INITIAL_SIZE = "initialSize";
private Logger log = LoggerFactory.getLogger(ConnectionFactoryDBCPImpl.class);
@@ -246,6 +247,25 @@
defaultReadOnly,
defaultAutoCommit,
ac);
+
+ // perform initial connection size
+ int initialSize = jcd.getConnectionPoolDescriptor().getInitialSize();
+ if(initialSize > 0)
+ {
+ try
+ {
+ for (int i = 0 ; i < initialSize ; i++)
+ {
+ connectionPool.addObject();
+ }
+ }
+ catch (Exception e)
+ {
+ log.error("Error preloading the connection pool (initialSize=" + initialSize + ")", e);
+ }
+ log.info("Setup connection-pool initial size to " + initialSize);
+ }
+
return poolableConnectionFactory.getPool();
}
@@ -273,6 +293,7 @@
connectionPool.setNumTestsPerEvictionRun(config.numTestsPerEvictionRun);
connectionPool.setMinEvictableIdleTimeMillis(config.minEvictableIdleTimeMillis);
connectionPool.setTestWhileIdle(config.testWhileIdle);
+ //connectionPool.setSoftMinEvictableIdleTimeMillis(config.softMinEvictableIdleTimeMillis);
return connectionPool;
}
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java?view=diff&rev=450012&r1=450011&r2=450012
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java Tue Sep 26 05:09:05 2006
@@ -132,7 +132,27 @@
if (log.isDebugEnabled()) log.debug("createPool was called");
PoolableObjectFactory pof = new ConPoolFactory(this, jcd);
GenericObjectPool.Config conf = jcd.getConnectionPoolDescriptor().getObjectPoolConfig();
- return new GenericObjectPool(pof, conf);
+ ObjectPool pool = new GenericObjectPool(pof, conf);
+
+ // perform initial connection size
+ int initialSize = jcd.getConnectionPoolDescriptor().getInitialSize();
+ if(initialSize > 0)
+ {
+ try
+ {
+ for (int i = 0 ; i < initialSize ; i++)
+ {
+ pool.addObject();
+ }
+ }
+ catch (Exception e)
+ {
+ log.error("Error preloading the connection pool (initialSize=" + initialSize + ")", e);
+ }
+ log.info("Setup connection-pool initial size to " + initialSize);
+ }
+
+ return pool;
}
/**
@@ -199,8 +219,7 @@
}
if (isValid)
{
- final String validationQuery;
- validationQuery = jcd.getConnectionPoolDescriptor().getValidationQuery();
+ final String validationQuery = jcd.getConnectionPoolDescriptor().getValidationQuery();
if (validationQuery != null)
{
isValid = validateConnection(con, validationQuery);
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/pooling/PoolConfiguration.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/pooling/PoolConfiguration.java?view=diff&rev=450012&r1=450011&r2=450012
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/pooling/PoolConfiguration.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/pooling/PoolConfiguration.java Tue Sep 26 05:09:05 2006
@@ -28,14 +28,14 @@
* Encapsulates configuration properties for
* implementations using {@link org.apache.commons.pool.ObjectPool}.
*
- * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
* @version $Id$
*/
public class PoolConfiguration extends Properties implements Serializable, AttributeContainer
{
-
private static final long serialVersionUID = -3850488378321541047L;
+ private int initialSize = 0;
+
//*****************************************************
// constants
//*****************************************************
@@ -50,15 +50,17 @@
public static final String TIME_BETWEEN_EVICTION_RUNS_MILLIS = "timeBetweenEvictionRunsMillis";
public static final String NUM_TESTS_PER_EVICTION_RUN = "numTestsPerEvictionRun";
public static final String MIN_EVICTABLE_IDLE_TIME_MILLIS = "minEvictableIdleTimeMillis";
+ //public static final String SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS = "softMinEvictableIdleTimeMillis";
public static final String LOG_ABANDONED = "logAbandoned";
public static final String REMOVE_ABANDONED = "removeAbandoned";
public static final String REMOVE_ABANDONED_TIMEOUT = "removeAbandonedTimeout";
public static final String VALIDATION_QUERY = "validationQuery";
+ public static final String INITIAL_SIZE = "initialSize";
//*****************************************************
// used default values
//*****************************************************
- public static final int DEFAULT_MAX_ACTIVE = 21;
+ public static final int DEFAULT_MAX_ACTIVE = 30;
public static final int DEFAULT_MAX_IDLE = -1;
public static final int DEFAULT_MIN_IDLE = 0;
public static final long DEFAULT_MAX_WAIT = 5000;
@@ -84,6 +86,7 @@
this.setTestOnReturn(DEFAULT_TEST_ON_RETURN);
this.setTestWhileIdle(DEFAULT_TEST_WHILE_IDLE);
this.setMinEvictableIdleTimeMillis(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
+ //this.setSoftMinEvictableIdleTimeMillis(GenericObjectPool.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
this.setTimeBetweenEvictionRunsMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS);
this.setNumTestsPerEvictionRun(DEFAULT_NUM_TESTS_PER_EVICTION_RUN);
this.setLogAbandoned(DEFAULT_LOG_ABANDONED);
@@ -111,6 +114,7 @@
conf.minIdle = getMinIdle();
conf.maxWait = getMaxWait();
conf.minEvictableIdleTimeMillis = getMinEvictableIdleTimeMillis();
+ //conf.softMinEvictableIdleTimeMillis = getSoftMinEvictableIdleTimeMillis();
conf.numTestsPerEvictionRun = getNumTestsPerEvictionRun();
conf.testOnBorrow = isTestOnBorrow();
conf.testOnReturn = isTestOnReturn();
@@ -251,7 +255,7 @@
public byte getWhenExhaustedAction()
{
- return new Byte(getProperty(WHEN_EXHAUSTED_ACTION)).byteValue();
+ return Byte.parseByte(getProperty(WHEN_EXHAUSTED_ACTION));
}
public void setWhenExhaustedAction(byte whenExhaustedAction)
@@ -315,6 +319,17 @@
}
+// public long getSoftMinEvictableIdleTimeMillis()
+// {
+// return Integer.parseInt(getProperty(SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS));
+// }
+//
+// public void setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis)
+// {
+// this.setProperty(SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS, Long.toString(softMinEvictableIdleTimeMillis));
+// }
+
+
public int getNumTestsPerEvictionRun()
{
return Integer.parseInt(getProperty(NUM_TESTS_PER_EVICTION_RUN));
@@ -325,5 +340,14 @@
this.setProperty(NUM_TESTS_PER_EVICTION_RUN, Integer.toString(numTestsPerEvictionRun));
}
+ public int getInitialSize()
+ {
+ return initialSize;
+ }
+
+ public void setInitialSize(int initialSize)
+ {
+ this.initialSize = initialSize;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org