[jboss-svn-commits] JBL Code SVN: r11147 - labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Apr 20 04:53:07 EDT 2007


Author: kevin.conner at jboss.com
Date: 2007-04-20 04:53:07 -0400 (Fri, 20 Apr 2007)
New Revision: 11147

Modified:
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java
Log:
Added asynchronous exception handler: JBESB-517

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java	2007-04-20 08:37:58 UTC (rev 11146)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java	2007-04-20 08:53:07 UTC (rev 11147)
@@ -23,10 +23,10 @@
 
 import java.sql.SQLException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.Map;
 
 import javax.jms.Connection;
+import javax.jms.ExceptionListener;
 import javax.jms.JMSException;
 import javax.jms.QueueConnection;
 import javax.jms.QueueConnectionFactory;
@@ -108,6 +108,12 @@
                 TopicConnectionFactory factory = (TopicConnectionFactory) factoryConnection;
                 jmsConnection = factory.createTopicConnection();
             }
+            jmsConnection.setExceptionListener(new ExceptionListener() {
+                public void onException(JMSException arg0)
+                {
+                    removeSessionPool() ;
+                }
+            }) ;
             jmsConnection.start();
         }
         //Create a new Session
@@ -214,23 +220,16 @@
     /**
      * This method is called when the pool needs to destroyed. It closes all open sessions
      * and the connection and removes it from the container's poolMap.
-     * 
-     * @throws ConnectionException
      */
-    public synchronized void removeSessionPool() throws JMSException
+    public synchronized void removeSessionPool()
     {
-        for (Iterator<Session> i=freeSessions.iterator();i.hasNext();) {
-            i.next().close();
-            i.remove();
-        }
-        for (Iterator<Session> i=inUseSessions.iterator();i.hasNext();) {
-            i.next().close();
-            i.remove();
-        }
+        freeSessions.clear() ;
+        inUseSessions.clear() ;
         logger.debug("Emptied the session pool now closing the connection to the factory.");
         if (jmsConnection!=null) {
-            jmsConnection.stop();
-            jmsConnection.close();
+            try {
+                jmsConnection.close();
+            } catch (final Exception ex) {} // ignore
             jmsConnection=null;
         }
         JmsConnectionPoolContainer.removePool(poolKey);




More information about the jboss-svn-commits mailing list