[jboss-svn-commits] JBL Code SVN: r27091 - labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/couriers.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 23 04:35:13 EDT 2009


Author: beve
Date: 2009-06-23 04:35:12 -0400 (Tue, 23 Jun 2009)
New Revision: 27091

Modified:
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java
Log:
Attempting to fixa a deadlock issue.


Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java	2009-06-23 08:14:50 UTC (rev 27090)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java	2009-06-23 08:35:12 UTC (rev 27091)
@@ -280,7 +280,7 @@
 
 
     private boolean jmsConnectRetry(Exception exc) {
-        _logger.debug("JMS error.  Attempting JMS reconnect.", exc);
+        _logger.info("JMS error.  Attempting JMS reconnect.", exc);
 
         synchronized(this) {
             try {
@@ -421,6 +421,33 @@
         }
 
         javax.jms.Message jmsMessage = null;
+        try
+        {
+            jmsMessage = receiveOne(millis);
+            _logger.debug("Received : " + jmsMessage);
+        }
+        catch (final JMSException e)
+        {
+            if (!jmsConnectRetry(e))
+            {
+                throw new CourierTransportException("Caught exception during receive and could not reconnect! ",e);
+            }
+            // Try again...
+            try
+            {
+                jmsMessage = receiveOne(millis);
+            }
+            catch (final JMSException e2)
+            {
+                throw new CourierTransportException("Caught exception during delivery having successfully recovered! ",e2);
+            }
+        }
+        catch (Exception e) 
+        {
+            throw new CourierTransportException("Exception caught : ", e);
+        }
+        
+        /*
         synchronized(this) {
             if (null != _messageConsumer) {
                 try {
@@ -442,8 +469,17 @@
                 }
             }
         }
+        */
         return jmsMessage;
     } // ________________________________
+    
+    private javax.jms.Message receiveOne(final long timeout) throws JMSException
+    {
+        if (_messageConsumer == null)
+            return null;
+        
+        return _messageConsumer.receive(timeout);
+    }
 
     /**
      * Sets the strategy for handling the setting of properties on an outgoing




More information about the jboss-svn-commits mailing list