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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 1 11:39:34 EDT 2009


Author: kevin.conner at jboss.com
Date: 2009-07-01 11:39:34 -0400 (Wed, 01 Jul 2009)
New Revision: 27391

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java
Log:
Cleanup and retry session creation on connection error: JBESB-2480

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java	2009-07-01 15:37:19 UTC (rev 27390)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPool.java	2009-07-01 15:39:34 UTC (rev 27391)
@@ -210,6 +210,34 @@
      */
     public synchronized JmsSession getSession(final int acknowledgeMode) throws NamingException, JMSException, ConnectionException
     {
+        try
+        {
+            return internalGetSession(acknowledgeMode) ;
+        }
+        catch (final JMSException jmse)
+        {
+            /*
+             * JBoss Messaging may drop the connection from the server side.
+             * We check for IllegalStateException as this appears to be the indicator
+             * exception used by JBoss Messaging when the connection has disappeared.
+             */
+            Throwable cause = jmse ;
+            while(cause.getCause() != null)
+            {
+                cause = cause.getCause() ;
+            }
+            if (cause instanceof IllegalStateException)
+            {
+                removeSessionPool() ;
+                return internalGetSession(acknowledgeMode) ;
+            }
+            throw jmse ;
+        }
+    }
+    
+    private synchronized JmsSession internalGetSession(final int acknowledgeMode)
+        throws NamingException, JMSException, ConnectionException
+    {
         try {
             initConnection() ;
         } catch (final NamingContextException nce) {




More information about the jboss-svn-commits mailing list