[Jboss-cvs] JBossAS SVN: r56106 - branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 21 11:19:51 EDT 2006
Author: weston.price at jboss.com
Date: 2006-08-21 11:19:50 -0400 (Mon, 21 Aug 2006)
New Revision: 56106
Modified:
branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
Log:
[JBAS-3453] Adding purge policy and policy handling to JBossManagedConnectionPool
as well as InternalManagedConnectionPool.
Modified: branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java 2006-08-21 15:19:02 UTC (rev 56105)
+++ branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java 2006-08-21 15:19:50 UTC (rev 56106)
@@ -11,6 +11,7 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionRequestInfo;
@@ -326,26 +327,84 @@
{
if (trace)
log.trace("Destroying returned connection " + cl);
- doDestroy(cl);
+
+ if(poolParams.purgePolilcy.equals(PurgePolicy.CONNECTION))
+ {
+ doDestroy(cl);
+
+ }else if(poolParams.purgePolilcy.equals(PurgePolicy.POOL))
+ {
+ purge(cl);
+ }
+
}
}
-
- public void flush()
+
+ private void purge(ConnectionListener cl)
{
+ List destroy = new ArrayList();
+
+ if(poolParams.purgePolilcy.equals(PurgePolicy.CONNECTION))
+ {
+ doDestroy(cl);
+
+ }else
+ {
+ flush(false);
+// //Add the current connection
+// destroy.add(cl);
+//
+// synchronized (cls)
+// {
+//
+// while(cls.size() > 0)
+// {
+//
+// }
+//
+// for(Iterator iter = cls.iterator(); iter.hasNext();)
+// {
+// ConnectionListener purged = (ConnectionListener)iter.next();
+// cls.remove(purged);
+// destroy.add(purged);
+// }
+//
+// }
+//
+//
+//
+// for(Iterator iter = destroy.iterator(); iter.hasNext();)
+// {
+// ConnectionListener dl = (ConnectionListener)iter.next();
+// doDestroy(dl);
+// }
+//
+
+ }
+
+
+ }
+
+ public void flush(boolean destroyCheckedOut)
+ {
ArrayList destroy = null;
synchronized (cls)
{
if (trace)
log.trace("Flushing pool checkedOut=" + checkedOut + " inPool=" + cls);
-
- // Mark checked out connections as requiring destruction
- for (Iterator i = checkedOut.iterator(); i.hasNext();)
+
+ if(destroyCheckedOut)
{
- ConnectionListener cl = (ConnectionListener) i.next();
- if (trace)
- log.trace("Flush marking checked out connection for destruction " + cl);
- cl.setState(ConnectionListener.DESTROY);
+ // Mark checked out connections as requiring destruction
+ for (Iterator i = checkedOut.iterator(); i.hasNext();)
+ {
+ ConnectionListener cl = (ConnectionListener) i.next();
+ if (trace)
+ log.trace("Flush marking checked out connection for destruction " + cl);
+ cl.setState(ConnectionListener.DESTROY);
+ }
+
}
// Destroy connections in the pool
while (cls.size() > 0)
@@ -438,7 +497,7 @@
IdleRemover.unregisterPool(this);
// Flush the pool
- flush();
+ flush(true);
}
public void fillToMin()
@@ -529,7 +588,7 @@
throw re;
}
}
-
+
/**
* Destroy a connection
*
@@ -576,6 +635,9 @@
public int blockingTimeout = 30000; //milliseconds
public long idleTimeout = 1000 * 60 * 30; //milliseconds, 30 minutes.
+
+ //Default to connection
+ public PurgePolicy purgePolilcy = PurgePolicy.CONNECTION;
}
/**
More information about the jboss-cvs-commits
mailing list