You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/08/21 03:11:36 UTC

svn commit: r687529 - /servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java

Author: ffang
Date: Wed Aug 20 18:11:36 2008
New Revision: 687529

URL: http://svn.apache.org/viewvc?rev=687529&view=rev
Log:
[SM-1513]Under high load JMS in/out provider fails to receive responses.

Modified:
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java

Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java?rev=687529&r1=687528&r2=687529&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java Wed Aug 20 18:11:36 2008
@@ -399,21 +399,26 @@
         final Destination replyDest = getReplyDestination(exchange, out, session);
         // Create message and send it
         final Message sendJmsMsg = marshaler.createMessage(exchange, in, session);
-        //setCorrelationID(sendJmsMsg, exchange);
-        sendJmsMsg.setJMSReplyTo(replyDest);
+        sendJmsMsg.setJMSReplyTo(replyDest);  
+
         template.send(dest, new MessageCreator() {
-            public Message createMessage(Session session) throws JMSException {
+            public Message createMessage(Session session)
+                throws JMSException {
                 return sendJmsMsg;
             }
         });
+        
         // Create selector
         String jmsId = sendJmsMsg.getJMSMessageID();
         String selector = MSG_SELECTOR_START + jmsId + MSG_SELECTOR_END;
-        //Receiving JMS Message, Creating and Returning NormalizedMessage out
-        Message receiveJmsMsg = template.receiveSelected(replyDest, selector);
-        if (receiveJmsMsg == null) {
-            throw new IllegalStateException("Unable to receive response");
-        }
+        Message receiveJmsMsg;
+        synchronized (template) {
+            // Receiving JMS Message, Creating and Returning NormalizedMessage out
+            receiveJmsMsg = template.receiveSelected(replyDest, selector);
+            if (receiveJmsMsg == null) {
+                throw new IllegalStateException("Unable to receive response");
+            }
+        }    
         marshaler.populateMessage(receiveJmsMsg, exchange, out);
     }