[jboss-cvs] JBossAS SVN: r106949 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/connectionmanager/listener and 10 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jul 20 15:01:16 EDT 2010
Author: jesper.pedersen
Date: 2010-07-20 15:01:15 -0400 (Tue, 20 Jul 2010)
New Revision: 106949
Added:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java
Removed:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java
Modified:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
Log:
[JBJCA-384] Refactor connection manager (Part 3)
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -26,7 +26,7 @@
import org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManager;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
import org.jboss.jca.core.connectionmanager.listener.ConnectionState;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import java.util.Collection;
import java.util.HashMap;
@@ -58,40 +58,40 @@
*/
public abstract class AbstractConnectionManager implements ConnectionManager
{
- /**Log instance*/
+ /** Log instance */
private Logger log = Logger.getLogger(getClass());
+ /** Log trace */
+ private boolean trace;
+
/**
* Note that this copy has a trailing / unlike the original in
* JaasSecurityManagerService.
*/
private static final String SECURITY_MGR_PATH = "java:/jaas/";
- /**Connection manager pooling strategy*/
- private ManagedConnectionPool poolingStrategy;
+ /** The pool */
+ private Pool pool;
- /**Security domain jndi name*/
+ /** Security domain jndi name */
private String securityDomainJndiName;
- /**SubjectFactory*/
+ /** SubjectFactory */
private SubjectFactory subjectFactory;
- /**Log trace*/
- private boolean trace;
-
- /**Number of retry to allocate connection*/
+ /** Number of retry to allocate connection */
private int allocationRetry;
- /**Interval between retries*/
+ /** Interval between retries */
private long allocationRetryWaitMillis;
- /**Startup/ShutDown flag*/
+ /** Startup/ShutDown flag */
private AtomicBoolean shutdown = new AtomicBoolean(false);
- /**Cached connection manager*/
+ /** Cached connection manager */
private CachedConnectionManager cachedConnectionManager;
- /**Jndi name*/
+ /** Jndi name */
private String jndiName;
/**
@@ -112,21 +112,21 @@
}
/**
- * Sets pooling strategy.
- * @param poolingStrategy pooling strategy
+ * Set the pool.
+ * @param pool the pool
*/
- public void setPoolingStrategy(ManagedConnectionPool poolingStrategy)
+ public void setPool(Pool pool)
{
- this.poolingStrategy = poolingStrategy;
+ this.pool = pool;
}
/**
- * Gets pooling strategy.
- * @return pooling strategy
+ * Get the pool.
+ * @return the pool
*/
- public ManagedConnectionPool getPoolingStrategy()
+ public Pool getPool()
{
- return poolingStrategy;
+ return pool;
}
/**
@@ -224,7 +224,7 @@
*/
public javax.resource.spi.ManagedConnectionFactory getManagedConnectionFactory()
{
- if (poolingStrategy == null)
+ if (pool == null)
{
if (trace)
{
@@ -234,7 +234,7 @@
}
else
{
- return poolingStrategy.getManagedConnectionFactory();
+ return pool.getManagedConnectionFactory();
}
return null;
@@ -314,7 +314,7 @@
// First attempt
try
{
- return poolingStrategy.getConnection(transaction, subject, cri);
+ return pool.getConnection(transaction, subject, cri);
}
catch (ResourceException e)
{
@@ -342,7 +342,7 @@
Thread.sleep(allocationRetryWaitMillis);
}
- return poolingStrategy.getConnection(transaction, subject, cri);
+ return pool.getConnection(transaction, subject, cri);
}
catch (ResourceException re)
{
@@ -368,8 +368,8 @@
*/
public void returnManagedConnection(ConnectionListener cl, boolean kill)
{
- ManagedConnectionPool localStrategy = cl.getManagedConnectionPool();
- if (localStrategy != poolingStrategy)
+ Pool localStrategy = cl.getPool();
+ if (localStrategy != pool)
{
kill = true;
}
@@ -414,14 +414,14 @@
public Object allocateConnection(ManagedConnectionFactory mcf, ConnectionRequestInfo cri) throws ResourceException
{
//Check for pooling!
- if (poolingStrategy == null)
+ if (pool == null)
{
throw new ResourceException("You are trying to use a connection factory that has been shut down: " +
"ManagedConnectionFactory is null.");
}
//it is an explicit spec requirement that equals be used for matching rather than ==.
- if (!poolingStrategy.getManagedConnectionFactory().equals(mcf))
+ if (!pool.getManagedConnectionFactory().equals(mcf))
{
throw new ResourceException("Wrong ManagedConnectionFactory sent to allocateConnection!");
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,6 +23,7 @@
import org.jboss.jca.core.connectionmanager.listener.ConnectionCacheListener;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import org.jboss.jca.core.connectionmanager.transaction.JTATransactionChecker;
import org.jboss.tm.TransactionTimeoutConfiguration;
@@ -49,4 +50,15 @@
TransactionTimeoutConfiguration,
JTATransactionChecker
{
+ /**
+ * Set the pool.
+ * @param pool the pool
+ */
+ public void setPool(Pool pool);
+
+ /**
+ * Get the pool.
+ * @return the pool
+ */
+ public Pool getPool();
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
import org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -48,19 +48,19 @@
{
private Logger log = Logger.getLogger(getClass());
- /**Wraps managed connection instance*/
+ /** Wraps managed connection instance*/
private final ManagedConnection managedConnection;
- /**Managed connection pool for this connection*/
- private final ManagedConnectionPool managedConnectionPool;
+ /** Pool for this connection*/
+ private final Pool pool;
- /**Pool internal context*/
+ /** Pool internal context*/
private final Object internalManagedPoolContext;
- /**Connection State*/
+ /** Connection State*/
private ConnectionState state = ConnectionState.NORMAL;
- /**Connection handles*/
+ /** Connection handles*/
private final CopyOnWriteArrayList<Object> connectionHandles = new CopyOnWriteArrayList<Object>();
/**Track by transaction or not*/
@@ -85,16 +85,16 @@
* Creates a new instance of the listener that is responsible for
* tracking the owned connection instance.
* @param managedConnection managed connection
- * @param managedConnectionPool managed connection pool
+ * @param pool pool
* @param context pool internal context
* @param cm connection manager
*/
protected AbstractConnectionListener(AbstractConnectionManager cm, ManagedConnection managedConnection,
- ManagedConnectionPool managedConnectionPool, Object context)
+ Pool pool, Object context)
{
this.cm = cm;
this.managedConnection = managedConnection;
- this.managedConnectionPool = managedConnectionPool;
+ this.pool = pool;
this.internalManagedPoolContext = context;
trace = this.log.isTraceEnabled();
lastUse = System.currentTimeMillis();
@@ -168,9 +168,9 @@
/**
* {@inheritDoc}
*/
- public ManagedConnectionPool getManagedConnectionPool()
+ public Pool getPool()
{
- return this.managedConnectionPool;
+ return this.pool;
}
/**
@@ -410,7 +410,7 @@
buffer.append(" lastUse=").append(lastUse);
buffer.append(" permit=").append(permit);
buffer.append(" trackByTx=").append(trackByTx.get());
- buffer.append(" managed connection pool=").append(this.managedConnectionPool);
+ buffer.append(" pool=").append(this.pool);
buffer.append(" pool internal context=").append(this.internalManagedPoolContext);
toString(buffer);
buffer.append(']');
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -21,7 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.listener;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionEventListener;
@@ -46,11 +46,11 @@
ManagedConnection getManagedConnection();
/**
- * Retrieve the managed connection pool for this listener.
+ * Retrieve the pool for this listener.
*
- * @return the managed connection pool
+ * @return the pool
*/
- ManagedConnectionPool getManagedConnectionPool();
+ Pool getPool();
/**
* Tidyup
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -22,7 +22,7 @@
package org.jboss.jca.core.connectionmanager.listener;
import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import javax.resource.spi.ConnectionEvent;
import javax.resource.spi.ManagedConnection;
@@ -41,13 +41,13 @@
* Creates a new no-tx listener.
* @param cm connection manager
* @param mc managed connection
- * @param mcp managed connection pool
+ * @param pool pool
* @param context context
*/
public NoTxConnectionListener(final AbstractConnectionManager cm, final ManagedConnection mc,
- final ManagedConnectionPool mcp, final Object context)
+ final Pool pool, final Object context)
{
- super(cm, mc, mcp, context);
+ super(cm, mc, pool, context);
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
import org.jboss.jca.common.JBossResourceException;
import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
import org.jboss.jca.core.connectionmanager.xa.LocalXAResource;
@@ -66,16 +66,16 @@
* Creates a new tx listener.
* @param cm connection manager
* @param mc managed connection
- * @param mcp managed connection pool
+ * @param pool pool
* @param context context
* @param xaResource xaresource instance
* @throws ResourceException if aexception while creating
*/
public TxConnectionListener(final AbstractConnectionManager cm, final ManagedConnection mc,
- final ManagedConnectionPool mcp, final Object context, final XAResource xaResource)
+ final Pool pool, final Object context, final XAResource xaResource)
throws ResourceException
{
- super(cm, mc, mcp, context);
+ super(cm, mc, pool, context);
this.xaResource = xaResource;
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -34,8 +34,7 @@
* Non transactional connection manager implementation.
*
* @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
- * @version $Rev$
- *
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
*/
public class NoTxConnectionManager extends AbstractConnectionManager
{
@@ -55,11 +54,9 @@
public ConnectionListener createConnectionListener(ManagedConnection managedConnection, Object context)
throws ResourceException
{
- ConnectionListener cli = new NoTxConnectionListener(this, managedConnection, getPoolingStrategy(), context);
+ ConnectionListener cli = new NoTxConnectionListener(this, managedConnection, getPool(), context);
managedConnection.addConnectionEventListener(cli);
return cli;
-
}
-
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,7 +25,8 @@
import org.jboss.jca.common.JBossResourceException;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
@@ -54,7 +55,7 @@
* @version $Rev$
*
*/
-public abstract class AbstractPool implements ManagedConnectionPool
+public abstract class AbstractPool implements Pool
{
/** The logger */
protected final Logger log = Logger.getLogger(getClass());
@@ -72,7 +73,7 @@
private ConnectionListenerFactory clf;
/** The pool parameters */
- private final PoolParams poolParams;
+ private final PoolConfiguration poolConfiguration;
/** Whether to use separate pools for transactional and non-transaction use */
private boolean noTxSeparatePools;
@@ -84,20 +85,20 @@
* Create a new base pool.
*
* @param mcf the managed connection factory
- * @param poolParams the pooling parameters
+ * @param pc the pool configuration
* @param noTxSeparatePools noTxSeparatePool
*/
- protected AbstractPool(final ManagedConnectionFactory mcf, final PoolParams poolParams,
- final boolean noTxSeparatePools)
+ protected AbstractPool(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+ final boolean noTxSeparatePools)
{
if (mcf == null)
throw new IllegalArgumentException("MCF is null");
- if (poolParams == null)
- throw new IllegalArgumentException("PoolParams is null");
+ if (pc == null)
+ throw new IllegalArgumentException("PoolConfiguration is null");
this.mcf = mcf;
- this.poolParams = poolParams;
+ this.poolConfiguration = pc;
this.noTxSeparatePools = noTxSeparatePools;
this.trace = log.isTraceEnabled();
}
@@ -148,7 +149,7 @@
if (subPoolContext == null)
{
SubPoolContext newSubPoolContext = new SubPoolContext(getTransactionManager(), mcf, clf, subject,
- cri, poolParams);
+ cri, poolConfiguration);
subPoolContext = subPools.putIfAbsent(key, newSubPoolContext);
if (subPoolContext == null)
{
@@ -510,7 +511,7 @@
.append(" [InUse/Available/Max]: [");
toLog.append(getInUseConnectionCount()).append("/");
toLog.append(getAvailableConnectionCount()).append("/");
- toLog.append(poolParams.getMaxSize());
+ toLog.append(poolConfiguration.getMaxSize());
toLog.append("]");
*/
log.trace(toLog);
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -22,6 +22,8 @@
package org.jboss.jca.core.connectionmanager.pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+
import javax.resource.spi.ConnectionRequestInfo;
import javax.resource.spi.ManagedConnectionFactory;
import javax.security.auth.Subject;
@@ -40,14 +42,14 @@
* Create a new prefill pool.
*
* @param mcf the managed connection factory
- * @param poolParams the pooling parameters
+ * @param pc the pool configuration
* @param noTxSeparatePools noTxSeparatePool
*/
- protected AbstractPrefillPool(final ManagedConnectionFactory mcf, final PoolParams poolParams,
+ protected AbstractPrefillPool(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
final boolean noTxSeparatePools)
{
- super(mcf, poolParams, noTxSeparatePools);
- this.shouldPrefill = poolParams.isPrefill();
+ super(mcf, pc, noTxSeparatePools);
+ this.shouldPrefill = pc.isPrefill();
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -26,6 +26,7 @@
import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
import org.jboss.jca.core.connectionmanager.listener.ConnectionState;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.pool.idle.IdleConnectionRemovalSupport;
import org.jboss.jca.core.connectionmanager.pool.idle.IdleRemover;
import org.jboss.jca.core.connectionmanager.pool.validator.ConnectionValidator;
@@ -81,6 +82,9 @@
/** The log */
private static Logger log = Logger.getLogger(InternalManagedConnectionPool.class);
+ /** Whether trace is enabled */
+ private final boolean trace = log.isTraceEnabled();
+
/** The managed connection factory */
private final ManagedConnectionFactory mcf;
@@ -93,8 +97,8 @@
/** The default connection request information */
private final ConnectionRequestInfo defaultCri;
- /** The pooling parameters */
- private final PoolParams poolParams;
+ /** The pool configuration */
+ private final PoolConfiguration poolConfiguration;
/** Copy of the maximum size from the pooling parameters.
* Dynamic changes to this value are not compatible with
@@ -108,9 +112,6 @@
/** The permits used to control who can checkout a connection */
private final Semaphore permits;
- /** Whether trace is enabled */
- private final boolean trace = log.isTraceEnabled();
-
/** The checked out connections */
private final CopyOnWriteArraySet<ConnectionListener> checkedOut = new CopyOnWriteArraySet<ConnectionListener>();
@@ -130,20 +131,29 @@
* @param clf the connection listener factory
* @param subject the subject
* @param cri the connection request info
- * @param poolParams the pool parameters
+ * @param pc the pool configuration
*/
public InternalManagedConnectionPool(ManagedConnectionFactory mcf, ConnectionListenerFactory clf, Subject subject,
- ConnectionRequestInfo cri, PoolParams poolParams)
+ ConnectionRequestInfo cri, PoolConfiguration pc)
{
+ if (mcf == null)
+ throw new IllegalArgumentException("MCF is null");
+
+ if (clf == null)
+ throw new IllegalArgumentException("CLF is null");
+
+ if (pc == null)
+ throw new IllegalArgumentException("PoolConfiguration is null");
+
this.mcf = mcf;
this.clf = clf;
this.defaultSubject = subject;
this.defaultCri = cri;
- this.poolParams = poolParams;
- this.maxSize = poolParams.getMaxSize();
+ this.poolConfiguration = pc;
+ this.maxSize = pc.getMaxSize();
this.permits = new Semaphore(this.maxSize, true);
- if (poolParams.isPrefill())
+ if (pc.isPrefill())
{
PoolFiller.fillPool(this);
}
@@ -176,7 +186,7 @@
try
{
//Check connection is available, and if not waits for the blocking timeout
- if (this.permits.tryAcquire(this.poolParams.getBlockingTimeout(), TimeUnit.MILLISECONDS))
+ if (this.permits.tryAcquire(this.poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS))
{
do
{
@@ -232,7 +242,7 @@
//We made it here, something went wrong and we should validate if
//we should continue attempting to acquire a connection
- if (this.poolParams.isUseFastFail())
+ if (this.poolConfiguration.isUseFastFail())
{
log.trace("Fast failing for connection attempt. No more attempts will " +
"be made to acquire connection from pool and a new connection " +
@@ -257,7 +267,7 @@
{
// we timed out
throw new ResourceException("No ManagedConnections available within configured blocking timeout ( "
- + this.poolParams.getBlockingTimeout() + " [ms] )");
+ + this.poolConfiguration.getBlockingTimeout() + " [ms] )");
}
}
@@ -337,7 +347,7 @@
if (!started.get())
{
started.set(true);
- if (poolParams.getMinSize() > 0)
+ if (poolConfiguration.getMinSize() > 0)
{
PoolFiller.fillPool(this);
}
@@ -420,7 +430,7 @@
public void removeIdleConnections()
{
ArrayList<ConnectionListener> destroy = null;
- long timeout = System.currentTimeMillis() - poolParams.getIdleTimeout();
+ long timeout = System.currentTimeMillis() - poolConfiguration.getIdleTimeout();
while (true)
{
@@ -463,7 +473,7 @@
}
// We destroyed something, check the minimum.
- if (!shutdown.get() && poolParams.getMinSize() > 0)
+ if (!shutdown.get() && poolConfiguration.getMinSize() > 0)
{
PoolFiller.fillPool(this);
}
@@ -485,9 +495,9 @@
{
boolean remove = true;
- if (this.poolParams.isStrictMin())
+ if (this.poolConfiguration.isStrictMin())
{
- remove = cls.size() > poolParams.getMinSize();
+ remove = cls.size() > poolConfiguration.getMinSize();
log.trace("StrictMin is active. Current connection will be removed is " + remove);
@@ -503,19 +513,19 @@
*/
public void initialize()
{
- if (this.poolParams.getIdleTimeout() != 0L)
+ if (this.poolConfiguration.getIdleTimeout() != 0L)
{
//Register removal support
- IdleRemover.registerPool(this, this.poolParams.getIdleTimeout());
+ IdleRemover.registerPool(this, this.poolConfiguration.getIdleTimeout());
}
- if (this.poolParams.getBackgroundValidationInterval() > 0)
+ if (this.poolConfiguration.getBackgroundValidationInterval() > 0)
{
log.debug("Registering for background validation at interval " +
- this.poolParams.getBackgroundValidationInterval());
+ this.poolConfiguration.getBackgroundValidationInterval());
//Register validation
- ConnectionValidator.registerPool(this, this.poolParams.getBackgroundValidationInterval());
+ ConnectionValidator.registerPool(this, this.poolConfiguration.getBackgroundValidationInterval());
}
shutdown.set(false);
@@ -585,7 +595,7 @@
}
// This is really an error
- if (!kill && cls.size() >= poolParams.getMaxSize())
+ if (!kill && cls.size() >= poolConfiguration.getMaxSize())
{
log.warn("Destroying returned connection, maximum pool size exceeded " + cl);
kill = true;
@@ -689,7 +699,7 @@
}
// We destroyed something, check the minimum.
- if (!shutdown.get() && poolParams.getMinSize() > 0)
+ if (!shutdown.get() && poolConfiguration.getMinSize() > 0)
{
PoolFiller.fillPool(this);
}
@@ -746,7 +756,7 @@
// Also avoids unnessary fill checking when all connections are checked out
try
{
- if (permits.tryAcquire(poolParams.getBlockingTimeout(), TimeUnit.MILLISECONDS))
+ if (permits.tryAcquire(poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS))
{
try
{
@@ -801,12 +811,12 @@
*/
private int getMinSize()
{
- if (this.poolParams.getMinSize() > this.maxSize)
+ if (this.poolConfiguration.getMinSize() > this.maxSize)
{
return maxSize;
}
- return this.poolParams.getMinSize();
+ return this.poolConfiguration.getMinSize();
}
/**
@@ -821,7 +831,7 @@
log.trace("Attempting to validate connections for pool " + this);
}
- if (this.permits.tryAcquire(this.poolParams.getBlockingTimeout(), TimeUnit.MILLISECONDS))
+ if (this.permits.tryAcquire(this.poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS))
{
boolean destroyed = false;
try
@@ -878,7 +888,7 @@
permits.release();
//Check min size pool after validation
- if (destroyed && !shutdown.get() && poolParams.getMinSize() > 0)
+ if (destroyed && !shutdown.get() && poolConfiguration.getMinSize() > 0)
{
PoolFiller.fillPool(this);
}
@@ -899,7 +909,7 @@
cl = iter.next();
long lastCheck = cl.getLastValidatedTime();
- if ((System.currentTimeMillis() - lastCheck) >= poolParams.getBackgroundValidationInterval())
+ if ((System.currentTimeMillis() - lastCheck) >= poolConfiguration.getBackgroundValidationInterval())
{
cls.remove(cl);
break;
Deleted: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -1,202 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.jca.core.connectionmanager.pool;
-
-/**
- * Pooling parameters.
- * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
- * @version $Rev: $
- */
-public class PoolParams
-{
- /** Minumum size of the pool */
- private int minSize;
-
- /** Maximum size of the pool */
- private int maxSize;
-
- /**Blocking timeout. In milliseconds*/
- private int blockingTimeout;
-
- /**Idle timeout period. Default 30 mins. In milliseconds*/
- private long idleTimeout;
-
- /**Background validation interval*/
- private long backgroundValidationInterval;
-
- /**Prefill pool*/
- private boolean prefill;
-
- /**Strict minumum, default false*/
- private boolean strictMin;
-
- /**Do we want to immeadiately break when a connection cannot be matched and
- * not evaluate the rest of the pool?
- */
- private boolean useFastFail;
-
- /**
- * Constructor
- */
- public PoolParams()
- {
- minSize = 0;
- maxSize = 10;
- blockingTimeout = 30000;
- idleTimeout = 1000 * 60 * 30;
- backgroundValidationInterval = 0;
- prefill = false;
- strictMin = false;
- useFastFail = false;
- }
-
- /**
- * @return the minSize
- */
- public int getMinSize()
- {
- return minSize;
- }
-
- /**
- * @param minSize the minSize to set
- */
- public void setMinSize(int minSize)
- {
- this.minSize = minSize;
- }
-
- /**
- * @return the maxSize
- */
- public int getMaxSize()
- {
- return maxSize;
- }
-
- /**
- * @param maxSize the maxSize to set
- */
- public void setMaxSize(int maxSize)
- {
- this.maxSize = maxSize;
- }
-
- /**
- * @return the blockingTimeout
- */
- public int getBlockingTimeout()
- {
- return blockingTimeout;
- }
-
- /**
- * @param blockingTimeout the blockingTimeout to set
- */
- public void setBlockingTimeout(int blockingTimeout)
- {
- this.blockingTimeout = blockingTimeout;
- }
-
- /**
- * @return the idleTimeout
- */
- public long getIdleTimeout()
- {
- return idleTimeout;
- }
-
- /**
- * @param idleTimeout the idleTimeout to set
- */
- public void setIdleTimeout(long idleTimeout)
- {
- this.idleTimeout = idleTimeout;
- }
-
- /**
- * @return the backgroundInterval
- */
- public long getBackgroundValidationInterval()
- {
- return backgroundValidationInterval;
- }
-
- /**
- * @param backgroundValidationInterval the backgroundInterval to set
- */
- public void setBackgroundValidationInterval(long backgroundValidationInterval)
- {
- this.backgroundValidationInterval = backgroundValidationInterval;
- }
-
- /**
- * @return the prefill
- */
- public boolean isPrefill()
- {
- return prefill;
- }
-
- /**
- * @param prefill the prefill to set
- */
- public void setPrefill(boolean prefill)
- {
- this.prefill = prefill;
- }
-
- /**
- * @return the strictMin
- */
- public boolean isStrictMin()
- {
- return strictMin;
- }
-
- /**
- * @param strictMin the strictMin to set
- */
- public void setStrictMin(boolean strictMin)
- {
- this.strictMin = strictMin;
- }
-
- /**
- * @return the useFastFail
- */
- public boolean isUseFastFail()
- {
- return useFastFail;
- }
-
- /**
- * @param useFastFail the useFastFail to set
- */
- public void setUseFastFail(boolean useFastFail)
- {
- this.useFastFail = useFastFail;
- }
-
-
-}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,6 +23,7 @@
package org.jboss.jca.core.connectionmanager.pool;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import javax.resource.spi.ConnectionRequestInfo;
import javax.resource.spi.ManagedConnectionFactory;
@@ -53,12 +54,12 @@
* @param clf the connection listener factory
* @param subject the subject
* @param cri the connection request info
- * @param poolParams the pool parameters
+ * @param pc the pool configuration
*/
public SubPoolContext(TransactionManager tm, ManagedConnectionFactory mcf, ConnectionListenerFactory clf,
- Subject subject, ConnectionRequestInfo cri, PoolParams poolParams)
+ Subject subject, ConnectionRequestInfo cri, PoolConfiguration pc)
{
- subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams);
+ subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, pc);
if (tm != null)
{
trackByTx = new TransactionLocal(tm);
Deleted: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -1,95 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.jca.core.connectionmanager.pool.api;
-
-import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
-import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
-import org.jboss.jca.core.connectionmanager.pool.InternalManagedConnectionPool;
-
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.security.auth.Subject;
-import javax.transaction.Transaction;
-
-/**
- * A managed connection pool.
- *
- * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
- * @author <a href="mailto:d_jencks at users.sourceforge.net">David Jencks</a>
- * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
- * @version $Revision$
- */
-public interface ManagedConnectionPool
-{
- /**
- * Retrieve the managed connection factory for this pool.
- *
- * @return the managed connection factory
- */
- ManagedConnectionFactory getManagedConnectionFactory();
-
- /**
- * Set the connection listener factory.
- *
- * @param clf the connection event listener factory
- */
- void setConnectionListenerFactory(ConnectionListenerFactory clf);
-
- /**
- * Get a connection
- *
- * @param trackByTransaction for transaction stickiness
- * @param subject the subject for connection
- * @param cri the connection request information
- * @return a connection event listener wrapping the connection
- * @throws ResourceException for any error
- */
- ConnectionListener getConnection(Transaction trackByTransaction, Subject subject, ConnectionRequestInfo cri)
- throws ResourceException;
-
- /**
- * Return a connection
- *
- * @param cl the connection event listener wrapping the connection
- * @param kill whether to destroy the managed connection
- * @throws ResourceException for any error
- */
- void returnConnection(ConnectionListener cl, boolean kill)
- throws ResourceException;
-
- /**
- * Shutdown the pool
- */
- void shutdown();
-
- /**
- * Flush the pool
- */
- void flush();
-
- /**
- * Remove the matching SubPoolContext if the pool is empty
- * @param pool the internal managed connection pool
- */
- void emptySubPool(InternalManagedConnectionPool pool);
-}
Copied: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java (from rev 106944, projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java)
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,94 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
+import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
+import org.jboss.jca.core.connectionmanager.pool.InternalManagedConnectionPool;
+
+import javax.resource.ResourceException;
+import javax.resource.spi.ConnectionRequestInfo;
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.security.auth.Subject;
+import javax.transaction.Transaction;
+
+/**
+ * A pool.
+ *
+ * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
+ * @author <a href="mailto:d_jencks at users.sourceforge.net">David Jencks</a>
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public interface Pool
+{
+ /**
+ * Retrieve the managed connection factory for this pool.
+ *
+ * @return the managed connection factory
+ */
+ ManagedConnectionFactory getManagedConnectionFactory();
+
+ /**
+ * Set the connection listener factory.
+ *
+ * @param clf the connection event listener factory
+ */
+ void setConnectionListenerFactory(ConnectionListenerFactory clf);
+
+ /**
+ * Get a connection
+ *
+ * @param trackByTransaction for transaction stickiness
+ * @param subject the subject for connection
+ * @param cri the connection request information
+ * @return a connection event listener wrapping the connection
+ * @throws ResourceException for any error
+ */
+ ConnectionListener getConnection(Transaction trackByTransaction, Subject subject, ConnectionRequestInfo cri)
+ throws ResourceException;
+
+ /**
+ * Return a connection
+ *
+ * @param cl the connection event listener wrapping the connection
+ * @param kill whether to destroy the managed connection
+ * @throws ResourceException for any error
+ */
+ void returnConnection(ConnectionListener cl, boolean kill)
+ throws ResourceException;
+
+ /**
+ * Shutdown the pool
+ */
+ void shutdown();
+
+ /**
+ * Flush the pool
+ */
+ void flush();
+
+ /**
+ * Remove the matching SubPoolContext if the pool is empty
+ * @param pool the internal managed connection pool
+ */
+ void emptySubPool(InternalManagedConnectionPool pool);
+}
Copied: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java (from rev 106927, projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java)
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,200 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+/**
+ * The pool configuration.
+ * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class PoolConfiguration
+{
+ /** Minumum size of the pool */
+ private int minSize;
+
+ /** Maximum size of the pool */
+ private int maxSize;
+
+ /**Blocking timeout. In milliseconds*/
+ private int blockingTimeout;
+
+ /**Idle timeout period. Default 30 mins. In milliseconds*/
+ private long idleTimeout;
+
+ /**Background validation interval*/
+ private long backgroundValidationInterval;
+
+ /**Prefill pool*/
+ private boolean prefill;
+
+ /**Strict minumum, default false*/
+ private boolean strictMin;
+
+ /**Do we want to immeadiately break when a connection cannot be matched and
+ * not evaluate the rest of the pool?
+ */
+ private boolean useFastFail;
+
+ /**
+ * Constructor
+ */
+ public PoolConfiguration()
+ {
+ minSize = 0;
+ maxSize = 10;
+ blockingTimeout = 30000;
+ idleTimeout = 1000 * 60 * 30;
+ backgroundValidationInterval = 0;
+ prefill = false;
+ strictMin = false;
+ useFastFail = false;
+ }
+
+ /**
+ * @return the minSize
+ */
+ public int getMinSize()
+ {
+ return minSize;
+ }
+
+ /**
+ * @param minSize the minSize to set
+ */
+ public void setMinSize(int minSize)
+ {
+ this.minSize = minSize;
+ }
+
+ /**
+ * @return the maxSize
+ */
+ public int getMaxSize()
+ {
+ return maxSize;
+ }
+
+ /**
+ * @param maxSize the maxSize to set
+ */
+ public void setMaxSize(int maxSize)
+ {
+ this.maxSize = maxSize;
+ }
+
+ /**
+ * @return the blockingTimeout
+ */
+ public int getBlockingTimeout()
+ {
+ return blockingTimeout;
+ }
+
+ /**
+ * @param blockingTimeout the blockingTimeout to set
+ */
+ public void setBlockingTimeout(int blockingTimeout)
+ {
+ this.blockingTimeout = blockingTimeout;
+ }
+
+ /**
+ * @return the idleTimeout
+ */
+ public long getIdleTimeout()
+ {
+ return idleTimeout;
+ }
+
+ /**
+ * @param idleTimeout the idleTimeout to set
+ */
+ public void setIdleTimeout(long idleTimeout)
+ {
+ this.idleTimeout = idleTimeout;
+ }
+
+ /**
+ * @return the backgroundInterval
+ */
+ public long getBackgroundValidationInterval()
+ {
+ return backgroundValidationInterval;
+ }
+
+ /**
+ * @param backgroundValidationInterval the backgroundInterval to set
+ */
+ public void setBackgroundValidationInterval(long backgroundValidationInterval)
+ {
+ this.backgroundValidationInterval = backgroundValidationInterval;
+ }
+
+ /**
+ * @return the prefill
+ */
+ public boolean isPrefill()
+ {
+ return prefill;
+ }
+
+ /**
+ * @param prefill the prefill to set
+ */
+ public void setPrefill(boolean prefill)
+ {
+ this.prefill = prefill;
+ }
+
+ /**
+ * @return the strictMin
+ */
+ public boolean isStrictMin()
+ {
+ return strictMin;
+ }
+
+ /**
+ * @param strictMin the strictMin to set
+ */
+ public void setStrictMin(boolean strictMin)
+ {
+ this.strictMin = strictMin;
+ }
+
+ /**
+ * @return the useFastFail
+ */
+ public boolean isUseFastFail()
+ {
+ return useFastFail;
+ }
+
+ /**
+ * @param useFastFail the useFastFail to set
+ */
+ public void setUseFastFail(boolean useFastFail)
+ {
+ this.useFastFail = useFastFail;
+ }
+}
Added: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.strategy.PoolByCri;
+import org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubject;
+import org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubjectAndCri;
+
+import javax.resource.spi.ManagedConnectionFactory;
+
+/**
+ * The pool factory.
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class PoolFactory
+{
+ /**
+ * Constructor
+ */
+ public PoolFactory()
+ {
+ }
+
+ /**
+ * Create a pool
+ * @param strategy The pool strategy
+ * @param mcf The managed connection factory
+ * @param pc The pool configuration
+ * @param noTxSeparatePools no-tx separate pool
+ * @return The pool instance
+ */
+ public Pool create(final PoolStrategy strategy,
+ final ManagedConnectionFactory mcf,
+ final PoolConfiguration pc,
+ final boolean noTxSeparatePools)
+ {
+ if (strategy == null)
+ throw new IllegalArgumentException("Strategy is null");
+
+ if (mcf == null)
+ throw new IllegalArgumentException("MCF is null");
+
+ if (pc == null)
+ throw new IllegalArgumentException("PoolConfiguration is null");
+
+ switch (strategy)
+ {
+ case POOL_BY_CRI:
+ return new PoolByCri(mcf, pc, noTxSeparatePools);
+
+ case POOL_BY_SUBJECT:
+ return new PoolBySubject(mcf, pc, noTxSeparatePools);
+
+ case POOL_BY_SUBJECT_AND_CRI:
+ return new PoolBySubjectAndCri(mcf, pc, noTxSeparatePools);
+
+ case ONE_POOL:
+ return new OnePool(mcf, pc, noTxSeparatePools);
+ }
+
+ throw new IllegalArgumentException("Unknown strategy " + strategy);
+ }
+}
Added: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+/**
+ * Defines a pool strategy.
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public enum PoolStrategy
+{
+ /** POOL_BY_CRI */
+ POOL_BY_CRI,
+
+ /** POOL_BY_SUBJECT */
+ POOL_BY_SUBJECT,
+
+ /** POOL_BY_SUBJECT_AND_CRI */
+ POOL_BY_SUBJECT_AND_CRI,
+
+ /** ONE_POOL */
+ ONE_POOL
+}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -24,7 +24,7 @@
import org.jboss.jca.core.connectionmanager.pool.AbstractPrefillPool;
import org.jboss.jca.core.connectionmanager.pool.InternalManagedConnectionPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionRequestInfo;
@@ -43,12 +43,12 @@
* Creates a new instance.
*
* @param mcf managed connection factory
- * @param poolParams pool parameter
+ * @param pc pool configuration
* @param noTxSeparatePools notx seperate pool
*/
- public OnePool(final ManagedConnectionFactory mcf, final PoolParams poolParams, final boolean noTxSeparatePools)
+ public OnePool(final ManagedConnectionFactory mcf, final PoolConfiguration pc, final boolean noTxSeparatePools)
{
- super(mcf, poolParams, noTxSeparatePools);
+ super(mcf, pc, noTxSeparatePools);
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
package org.jboss.jca.core.connectionmanager.pool.strategy;
import org.jboss.jca.core.connectionmanager.pool.AbstractPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionRequestInfo;
@@ -42,13 +42,13 @@
/**
* Creates a new instance.
* @param mcf managed connection factory
- * @param poolParams pool parameter
+ * @param pc pool configuration
* @param noTxSeparatePools notx seperate pool
*/
- protected PoolByCri(final ManagedConnectionFactory mcf, final PoolParams poolParams,
- final boolean noTxSeparatePools)
+ public PoolByCri(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+ final boolean noTxSeparatePools)
{
- super(mcf, poolParams, noTxSeparatePools);
+ super(mcf, pc, noTxSeparatePools);
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
package org.jboss.jca.core.connectionmanager.pool.strategy;
import org.jboss.jca.core.connectionmanager.pool.AbstractPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionRequestInfo;
@@ -42,13 +42,13 @@
/**
* Creates a new instance.
* @param mcf managed connection factory
- * @param poolParams pool parameter
+ * @param pc pool configuration
* @param noTxSeparatePools notx seperate pool
*/
- protected PoolBySubject(final ManagedConnectionFactory mcf, final PoolParams poolParams,
- final boolean noTxSeparatePools)
+ public PoolBySubject(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+ final boolean noTxSeparatePools)
{
- super(mcf, poolParams, noTxSeparatePools);
+ super(mcf, pc, noTxSeparatePools);
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
package org.jboss.jca.core.connectionmanager.pool.strategy;
import org.jboss.jca.core.connectionmanager.pool.AbstractPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionRequestInfo;
@@ -43,13 +43,13 @@
/**
* Creates a new instance.
* @param mcf managed connection factory
- * @param poolParams pool parameter
+ * @param pc pool configuration
* @param noTxSeparatePools notx seperate pool
*/
- protected PoolBySubjectAndCri(final ManagedConnectionFactory mcf, final PoolParams poolParams,
- final boolean noTxSeparatePools)
+ public PoolBySubjectAndCri(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+ final boolean noTxSeparatePools)
{
- super(mcf, poolParams, noTxSeparatePools);
+ super(mcf, pc, noTxSeparatePools);
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -123,7 +123,7 @@
* @author <a href="mailto:d_jencks at users.sourceforge.net">David Jencks</a>
* @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
* @author <a href="weston.price at jboss.com">Weston Price</a>
- * @version $Revision: 77961 $
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
*/
public class TxConnectionManager extends AbstractConnectionManager
{
@@ -507,7 +507,7 @@
}
}
- ConnectionListener cli = new TxConnectionListener(this, mc, getPoolingStrategy(), context, xaResource);
+ ConnectionListener cli = new TxConnectionListener(this, mc, getPool(), context, xaResource);
mc.addConnectionEventListener(cli);
return cli;
}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,8 +25,10 @@
import org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManager;
import org.jboss.jca.core.connectionmanager.common.MockConnectionManager;
import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
import javax.resource.ResourceException;
import javax.security.auth.Subject;
@@ -36,8 +38,6 @@
import org.jboss.security.SubjectFactory;
import org.jboss.util.NotImplementedException;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -51,16 +51,22 @@
public class AbstractConnectionManagerTestCase
{
/**
- * testPoolingStrategyNotNull.
+ * testPoolNotNull.
*/
@Test
- public void testPoolingStrategyNotNull()
+ public void testPoolNotNull()
{
AbstractConnectionManager connectionManager = new MockConnectionManager();
- assertNull(connectionManager.getPoolingStrategy());
- connectionManager.setPoolingStrategy(new OnePool(new MockManagedConnectionFactory(), new PoolParams(), false));
- assertNotNull(connectionManager.getPoolingStrategy());
- assertTrue(connectionManager.getPoolingStrategy() instanceof OnePool);
+ assertNull(connectionManager.getPool());
+
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
+
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, new MockManagedConnectionFactory(), pc, false);
+ pool.setConnectionListenerFactory(connectionManager);
+ connectionManager.setPool(pool);
+
+ assertNotNull(connectionManager.getPool());
}
/**
@@ -137,7 +143,14 @@
AbstractConnectionManager connectionManager = new MockConnectionManager();
assertNull(connectionManager.getManagedConnectionFactory());
MockManagedConnectionFactory mcf = new MockManagedConnectionFactory();
- connectionManager.setPoolingStrategy(new OnePool(mcf, new PoolParams(), false));
+
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
+
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, false);
+ pool.setConnectionListenerFactory(connectionManager);
+ connectionManager.setPool(pool);
+
assertNotNull(connectionManager.getManagedConnectionFactory());
assertEquals(mcf, connectionManager.getManagedConnectionFactory());
}
@@ -229,7 +242,7 @@
public void testGetManagedConnectionFactoryIsNull()
{
AbstractConnectionManager connectionManager = new MockConnectionManager();
- connectionManager.setPoolingStrategy(null);
+ connectionManager.setPool(null);
assertNull(connectionManager.getManagedConnectionFactory());
}
@@ -246,14 +259,14 @@
}
/**
- * testAllocateConnectionPoolingStrategyNull.
+ * testAllocateConnectionPoolNull.
* @throws ResourceException for exception
*/
@Test(expected = ResourceException.class)
- public void testAllocateConnectionPoolingStrategyNull() throws ResourceException
+ public void testAllocateConnectionPoolNull() throws ResourceException
{
AbstractConnectionManager connectionManager = new MockConnectionManager();
- connectionManager.setPoolingStrategy(null);
+ connectionManager.setPool(null);
connectionManager.allocateConnection(null, null);
}
@@ -265,8 +278,14 @@
public void testAllocateConnectionWrongMCF() throws ResourceException
{
AbstractConnectionManager connectionManager = new MockConnectionManager();
- OnePool pool = new OnePool(new MockManagedConnectionFactory(), new PoolParams(), false);
- connectionManager.setPoolingStrategy(pool);
+
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
+
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, new MockManagedConnectionFactory(), pc, false);
+ pool.setConnectionListenerFactory(connectionManager);
+
+ connectionManager.setPool(pool);
connectionManager.allocateConnection(new MockManagedConnectionFactory(), null);
}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -27,8 +27,10 @@
import org.jboss.jca.core.connectionmanager.common.MockHandle;
import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
import org.jboss.jca.core.connectionmanager.notx.NoTxConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
import javax.resource.ResourceException;
import javax.resource.spi.ManagedConnectionFactory;
@@ -59,12 +61,13 @@
{
NoTxConnectionManager noTxCm = new NoTxConnectionManager();
mcf = new MockManagedConnectionFactory();
- PoolParams poolParams = new PoolParams();
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
- OnePool onePool = new OnePool(mcf, poolParams, true);
- onePool.setConnectionListenerFactory(noTxCm);
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+ pool.setConnectionListenerFactory(noTxCm);
- noTxCm.setPoolingStrategy(onePool);
+ noTxCm.setPool(pool);
connectionManager = noTxCm;
}
Copied: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java (from rev 106927, projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java)
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java (rev 0)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,135 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.unit.pool;
+
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * <code>PoolConfiguration</code> unit test.
+ *
+ * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class PoolConfigurationTestCase
+{
+ /**
+ * Test {@link PoolConfiguration#getMinSize()}
+ */
+ @Test
+ public void testMinSize()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertEquals(0, params.getMinSize());
+ params.setMinSize(10);
+ assertEquals(10, params.getMinSize());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#getMaxSize()}
+ */
+ @Test
+ public void testMaxSize()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertEquals(10, params.getMaxSize());
+ params.setMaxSize(20);
+ assertEquals(20, params.getMaxSize());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#getBlockingTimeout()}
+ */
+ @Test
+ public void testBlockingTimeout()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertEquals(30000, params.getBlockingTimeout());
+ params.setBlockingTimeout(60000);
+ assertEquals(60000, params.getBlockingTimeout());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#getIdleTimeout()}
+ */
+ @Test
+ public void testIdleTimeout()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertEquals(1000 * 60 * 30, params.getIdleTimeout());
+ params.setIdleTimeout(1000 * 60 * 20);
+ assertEquals(1000 * 60 * 20, params.getIdleTimeout());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#getBackgroundValidationInterval()}
+ */
+ @Test
+ public void testBackgroundValidationInterval()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertEquals(0L, params.getBackgroundValidationInterval());
+ params.setBackgroundValidationInterval(50000L);
+ assertEquals(50000L, params.getBackgroundValidationInterval());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#isPrefill()}
+ */
+ @Test
+ public void testIsPrefill()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertFalse("Prefill must be false", params.isPrefill());
+ params.setPrefill(true);
+ assertTrue("Prefill must be true", params.isPrefill());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#isStrictMin()}
+ */
+ @Test
+ public void testIsStrictMin()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertFalse("StrictMin must be false", params.isStrictMin());
+ params.setStrictMin(true);
+ assertTrue("StrictMin must be true", params.isStrictMin());
+ }
+
+ /**
+ * Test {@link PoolConfiguration#isUseFastFail()}
+ */
+ @Test
+ public void testIsUseFastFail()
+ {
+ PoolConfiguration params = new PoolConfiguration();
+ assertFalse("UseFastFail must be false", params.isUseFastFail());
+ params.setUseFastFail(true);
+ assertTrue("UseFastFail must be true", params.isUseFastFail());
+ }
+
+}
Deleted: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -1,136 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.jca.core.connectionmanager.unit.pool;
-
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * <code>PoolParams</code> unit test.
- *
- * @author gurkanerdogdu
- * @version $Rev$ $Date$
- *
- */
-public class PoolParamsTestCase
-{
- /**
- * Test {@link PoolParams#getMinSize()}
- */
- @Test
- public void testMinSize()
- {
- PoolParams params = new PoolParams();
- assertEquals(0, params.getMinSize());
- params.setMinSize(10);
- assertEquals(10, params.getMinSize());
- }
-
- /**
- * Test {@link PoolParams#getMaxSize()}
- */
- @Test
- public void testMaxSize()
- {
- PoolParams params = new PoolParams();
- assertEquals(10, params.getMaxSize());
- params.setMaxSize(20);
- assertEquals(20, params.getMaxSize());
- }
-
- /**
- * Test {@link PoolParams#getBlockingTimeout()}
- */
- @Test
- public void testBlockingTimeout()
- {
- PoolParams params = new PoolParams();
- assertEquals(30000, params.getBlockingTimeout());
- params.setBlockingTimeout(60000);
- assertEquals(60000, params.getBlockingTimeout());
- }
-
- /**
- * Test {@link PoolParams#getIdleTimeout()}
- */
- @Test
- public void testIdleTimeout()
- {
- PoolParams params = new PoolParams();
- assertEquals(1000 * 60 * 30, params.getIdleTimeout());
- params.setIdleTimeout(1000 * 60 * 20);
- assertEquals(1000 * 60 * 20, params.getIdleTimeout());
- }
-
- /**
- * Test {@link PoolParams#getBackgroundValidationInterval()}
- */
- @Test
- public void testBackgroundValidationInterval()
- {
- PoolParams params = new PoolParams();
- assertEquals(0L, params.getBackgroundValidationInterval());
- params.setBackgroundValidationInterval(50000L);
- assertEquals(50000L, params.getBackgroundValidationInterval());
- }
-
- /**
- * Test {@link PoolParams#isPrefill()}
- */
- @Test
- public void testIsPrefill()
- {
- PoolParams params = new PoolParams();
- assertFalse("Prefill must be false", params.isPrefill());
- params.setPrefill(true);
- assertTrue("Prefill must be true", params.isPrefill());
- }
-
- /**
- * Test {@link PoolParams#isStrictMin()}
- */
- @Test
- public void testIsStrictMin()
- {
- PoolParams params = new PoolParams();
- assertFalse("StrictMin must be false", params.isStrictMin());
- params.setStrictMin(true);
- assertTrue("StrictMin must be true", params.isStrictMin());
- }
-
- /**
- * Test {@link PoolParams#isUseFastFail()}
- */
- @Test
- public void testIsUseFastFail()
- {
- PoolParams params = new PoolParams();
- assertFalse("UseFastFail must be false", params.isUseFastFail());
- params.setUseFastFail(true);
- assertTrue("UseFastFail must be true", params.isUseFastFail());
- }
-
-}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,8 +25,10 @@
import org.jboss.jca.core.connectionmanager.common.MockConnectionRequestInfo;
import org.jboss.jca.core.connectionmanager.common.MockHandle;
import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
import org.jboss.jca.core.workmanager.unit.WorkManagerTestCase;
@@ -78,12 +80,13 @@
transactionManager.begin();
ManagedConnectionFactory mcf = new MockManagedConnectionFactory();
- PoolParams params = new PoolParams();
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
- OnePool onePool = new OnePool(mcf, params, true);
- onePool.setConnectionListenerFactory(txConnectionManager);
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+ pool.setConnectionListenerFactory(txConnectionManager);
- txConnectionManager.setPoolingStrategy(onePool);
+ txConnectionManager.setPool(pool);
Object handle = connectionManager.allocateConnection(mcf, new MockConnectionRequestInfo());
assertNotNull(handle);
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,8 +25,10 @@
import org.jboss.jca.core.connectionmanager.common.MockConnectionRequestInfo;
import org.jboss.jca.core.connectionmanager.common.MockHandle;
import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
import org.jboss.jca.core.workmanager.unit.WorkManagerTestCase;
@@ -76,12 +78,13 @@
transactionManager.begin();
ManagedConnectionFactory mcf = new MockManagedConnectionFactory();
- PoolParams params = new PoolParams();
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
- OnePool onePool = new OnePool(mcf, params, true);
- onePool.setConnectionListenerFactory(txConnectionManager);
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+ pool.setConnectionListenerFactory(txConnectionManager);
- txConnectionManager.setPoolingStrategy(onePool);
+ txConnectionManager.setPool(pool);
Object handle = connectionManager.allocateConnection(mcf, new MockConnectionRequestInfo());
assertNotNull(handle);
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,10 +25,12 @@
import org.jboss.jca.common.annotations.Annotations;
import org.jboss.jca.common.metadata.Metadata;
import org.jboss.jca.core.api.CloneableBootstrapContext;
-import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
+import org.jboss.jca.core.connectionmanager.ConnectionManager;
import org.jboss.jca.core.connectionmanager.notx.NoTxConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
import org.jboss.jca.core.spi.naming.JndiStrategy;
import org.jboss.jca.validator.Failure;
@@ -481,7 +483,7 @@
associateResourceAdapter(resourceAdapter, mcf);
// Add a connection manager
- AbstractConnectionManager cm = null;
+ ConnectionManager cm = null;
TransactionSupportLevel tsl = TransactionSupportLevel.NoTransaction;
TransactionSupportMetaData tsmd = TransactionSupportMetaData.NoTransaction;
@@ -537,11 +539,13 @@
cm = txCm;
}
- PoolParams poolParams = new PoolParams();
- OnePool onePool = new OnePool(mcf, poolParams, true);
- onePool.setConnectionListenerFactory(cm);
- cm.setPoolingStrategy(onePool);
+ PoolConfiguration pc = new PoolConfiguration();
+ PoolFactory pf = new PoolFactory();
+ Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+ pool.setConnectionListenerFactory(cm);
+ cm.setPool(pool);
+
// ConnectionFactory
Object cf = mcf.createConnectionFactory(cm);
More information about the jboss-cvs-commits
mailing list