[Jboss-cvs] JBossAS SVN: r56201 - branches/JBoss_4_0_3_SP1_JBAS_3511/server/src/main/org/jboss/jms/asf

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Aug 23 18:46:59 EDT 2006


Author: weston.price at jboss.com
Date: 2006-08-23 18:46:58 -0400 (Wed, 23 Aug 2006)
New Revision: 56201

Added:
   branches/JBoss_4_0_3_SP1_JBAS_3511/server/src/main/org/jboss/jms/asf/JmsSessionPoolFiller.java
Log:
[JBAS-3511] Improvements for ASF integration, pool management, idle session collection
as and dynamic allocation.

Added: branches/JBoss_4_0_3_SP1_JBAS_3511/server/src/main/org/jboss/jms/asf/JmsSessionPoolFiller.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3511/server/src/main/org/jboss/jms/asf/JmsSessionPoolFiller.java	2006-08-23 22:46:44 UTC (rev 56200)
+++ branches/JBoss_4_0_3_SP1_JBAS_3511/server/src/main/org/jboss/jms/asf/JmsSessionPoolFiller.java	2006-08-23 22:46:58 UTC (rev 56201)
@@ -0,0 +1,78 @@
+package org.jboss.jms.asf;
+
+import java.util.LinkedList;
+
+public class JmsSessionPoolFiller implements Runnable
+{
+   private final LinkedList pools = new LinkedList();
+
+   private final Thread fillerThread;
+
+   private static final JmsSessionPoolFiller filler = new JmsSessionPoolFiller();
+
+   public static void fillPool(StdServerSessionPool pool)
+   {
+      filler.internalFillPool(pool);
+   }
+
+   public JmsSessionPoolFiller ()
+   {
+      fillerThread = new Thread(this, "JMS Session PoolFiller");
+      fillerThread.start();
+   }
+
+   public void run()
+   {
+      ClassLoader myClassLoader = getClass().getClassLoader();
+      Thread.currentThread().setContextClassLoader(myClassLoader);
+      //keep going unless interrupted
+      while (true)
+      {
+         try 
+         {
+            StdServerSessionPool sp = null;
+            //keep iterating through pools till empty, exception escapes.
+            while (true)
+            {
+                     
+               synchronized (pools)
+               {
+                  sp = (StdServerSessionPool)pools.removeFirst();
+               }
+               if (sp == null) 
+               {
+                  break;
+               } 
+                        
+               sp.fillToMin();
+            } 
+
+         }
+         catch (Exception e)
+         {
+         } 
+                        
+         try 
+         {
+            synchronized (pools)
+            {
+               pools.wait();                        
+            }
+         }
+         catch (InterruptedException ie)
+         {
+            return;
+         } 
+      } 
+   }
+
+   private void internalFillPool(StdServerSessionPool mcp)
+   {
+      synchronized (pools)
+      {
+         pools.addLast(mcp);
+         pools.notify();
+      }
+   }
+   
+}




More information about the jboss-cvs-commits mailing list