From e38a71f2d547ec97a9f2456a042b00f1b979be60 Mon Sep 17 00:00:00 2001 From: edwardsmj Date: Thu, 9 Dec 2010 16:59:17 +0000 Subject: Enable binding.jms to deal with the MessageID sent as part of an async service invocation - as described in TUSCANY-3809 git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1044035 13f79535-47bb-0310-9956-ffa450edef68 --- .../jms/headers/HeaderReferenceInterceptor.java | 7 +++++++ .../jms/headers/HeaderServiceInterceptor.java | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderReferenceInterceptor.java b/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderReferenceInterceptor.java index 61c5dc8263..ad07655730 100644 --- a/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderReferenceInterceptor.java +++ b/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderReferenceInterceptor.java @@ -144,6 +144,13 @@ public class HeaderReferenceInterceptor implements Interceptor { context.setTimeToLive(JMSBindingConstants.DEFAULT_TIME_TO_LIVE); } + // Adding MESSAGE_ID field to the JMS message, which is used to correlate async callbacks + String msgID = (String)tuscanyMsg.getHeaders().get("MESSAGE_ID"); + if( msgID != null ) { + jmsMsg.setObjectProperty("MESSAGE_ID", msgID); + } // end if + // + return tuscanyMsg; } catch (JMSException e) { throw new JMSBindingException(e); diff --git a/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java b/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java index 178a87a53f..e899448760 100644 --- a/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java +++ b/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java @@ -40,9 +40,30 @@ public class HeaderServiceInterceptor implements Interceptor { } public Message invoke(Message msg) { + msg = invokeRequest( msg ); return invokeResponse(next.invoke(msg)); } + public Message invokeRequest(Message tuscanyMsg) { + + try { + + javax.jms.Message jmsMsg = tuscanyMsg.getBody(); + + // Handle MESSAGE_ID field of the JMS message, which is used to correlate async callbacks + String msgID = (String)jmsMsg.getObjectProperty("MESSAGE_ID"); + if( msgID != null ) { + tuscanyMsg.getHeaders().put("MESSAGE_ID", msgID); + } // end if + // + + } catch (JMSException e) { + throw new JMSBindingException(e); + } // end try + + return tuscanyMsg; + } // end method invokeRequest + public Message invokeResponse(Message tuscanyMsg) { try { -- cgit v1.2.3