diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java')
-rw-r--r-- | sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java | 21 |
1 files changed, 21 insertions, 0 deletions
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 { |