From 7dca5833965c8dd71528a1925718a9e6cefedb82 Mon Sep 17 00:00:00 2001 From: antelder Date: Fri, 30 Jan 2009 15:27:43 +0000 Subject: TUSCANY-2798: Fix the jms binding to use the destination in the binding response element when the request message has no replyto git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@739306 13f79535-47bb-0310-9956-ffa450edef68 --- .../jms/transport/TransportServiceInterceptor.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'branches/sca-java-1.x') diff --git a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java index 91868204ac..a2ecd3637b 100644 --- a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java +++ b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java @@ -21,6 +21,7 @@ package org.apache.tuscany.sca.binding.jms.transport; import java.util.logging.Level; import java.util.logging.Logger; +import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; @@ -117,8 +118,18 @@ public class TransportServiceInterceptor implements Interceptor { javax.jms.Message requestJMSMsg = context.getJmsMsg(); javax.jms.Message responseJMSMsg = msg.getBody(); + Destination replyDest = requestJMSMsg.getJMSReplyTo(); + if (replyDest == null) { + if (jmsBinding.getResponseDestinationName() != null) { + try { + replyDest = jmsResourceFactory.lookupDestination(jmsBinding.getResponseDestinationName()); + } catch (NamingException e) { + throw new JMSBindingException("Exception lookingup response destination", e); + } + } + } - if (requestJMSMsg.getJMSReplyTo() == null) { + if (replyDest == null) { // assume no reply is expected if (msg.getBody() != null) { logger.log(Level.FINE, "JMS service '" + service.getName() + "' dropped response as request has no replyTo"); @@ -136,7 +147,7 @@ public class TransportServiceInterceptor implements Interceptor { responseJMSMsg.setJMSCorrelationID(requestJMSMsg.getJMSCorrelationID()); } - MessageProducer producer = session.createProducer(context.getReplyToDestination()); + MessageProducer producer = session.createProducer(replyDest); producer.send((javax.jms.Message)msg.getBody()); -- cgit v1.2.3