Oracle Service Bus, jms request/response, response doesn’t arrive

This week i was trying to make my proxyservice working in osb which was based on a jms transport, nothing fancy.
Just a normal request/response messageflow and the response needed to be published on a different queue.proxyservice

After testing the flow from the console all worked fine, request pipeline completed, response pipeline completed, but no messages in the response queue.
Looking at the definition of the proxyservice, we will notice the correlation pattern will make use of the JMSCorrelationID.
Since i use the easy way of testing (and this proved this isn’t the best way) by using the testconsole of the proxyservice, the jms properties will never be set.
To check this look in the invocation trace for ‘receiving request > $inbound’. In here we should see the values. Since they won’t be set the osb can’t correlate the response back and so the response will never be published to the queue.

From now on we will add a ‘publish’ folder to every osb project to fill our resources in a ‘real scenario’ way. It’s folder for all the testing resources.
In my case i just needed a simple business service with jms transport which would add a test-message on ‘queue_to_listen_on’.
Like this i can just trigger the process in the way it should happen, and others can re-use the testingtools.

Lets test with the businessservice, send a message to the queue. In the proxyservice i will log the inbound to see if the jms properties are set.

<BEA-000000> < &#91;Pipeline_Request, Pipeline_Request_request, stage1, REQUEST&#93; !!! debug, logging inbound variable !!!: 
<con:endpoint name="ProxyService$your_project$services$proxy$your_proxyservice" xmlns:con="">
    <con:request xsi:type="jms:JmsRequestMetaData" xmlns:jms="" xmlns:xsi="">
      <tran:headers xsi:type="jms:JmsRequestHeaders" xmlns:tran="">
        <tran:user-header name="JMS_OracleDelay" value="0"/>
        <tran:user-header name="JMS_OracleDeliveryMode" value="2"/>
        <tran:user-header name="JMSXState" value="0"/>
        <tran:user-header name="JMSXRecvTimestamp" value="1249544253835"/>
        <tran:user-header name="JMS_OracleTimestamp" value="1249544242855"/>

Now we see the jms properties are set.

Lessons learned
Either put messages on the queue by use of the wls console, hermes or by using a dedicated business service. In these cases jms properties will be set and the correlation will succeed.


About Eric Elzinga
Eric Elzinga I'm an integration consultant located in The Netherlands. Mainly doing projects based on Oracle integration stacks (Oracle SOA Suite/Oracle Service Bus (OSB)), Java development, and opensource integration products.

One Response to Oracle Service Bus, jms request/response, response doesn’t arrive

  1. Pingback: Oracle Service Bus, jms request/response, response doesn't arrive | Oracle .. Java .. OpenSource .. SOA

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: