have you declared the message exchange pattern (mep) property to be "OneWay"?
This is an attribute that can be set on the actions element:
<actions mep="OneWay"> <action name="testAction" class="org.jboss.soa.esb.actions.SystemPrintln" /> ... </actions>
Ahhh, that's it !!! ...message exchange pattern
I'm going to test it.
By the way, It's not documented or there's no quickstart with an example.
Take a look at the helloworld quickstart, it has an example of this (in the main trunk and in 4_2_1_GA_CP).
The original implementation of the pipeline used a null response from an action as an indicator of a one way message, this proved problematic.
The mep attribute was added to make the intentions of the service clear, either a one way or request/response. This decoupled the intentions of the service from the implementations of the actions.
If the mep is set to OneWay then the pipeline will always ignore the response from the final action and will never send a reply to the invocation. If it is set to RequestResponse then it expects the final action to return a message and will complain if an action returns with a null.
If the mep is not set then it falls back to the previous behaviour which is as follows
- null response from an action results in no response from the service
- non null response from an action then the service expects to send a response
The error message you are seeing is the result of your final action returning a response message but the incoming message not specifying a ReplyTo and is associated with a null mep.
This should be documented somewhere (I will double check), but the quickstarts in trunk and CP now do contain examples of this usage.
Excellent, very clear !!!
<!-- The next action is for Continuous Integration testing -->
... <actions mep="OneWay"> <action name="action1" class="org.jboss.soa.esb.samples.quickstart.helloworld.MyJMSListenerAction" process="displayMessage" /> <action name="action2" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="printfull" value="true"/> </action> <!-- The next action is for Continuous Integration testing --> <action name="testStore" class="org.jboss.soa.esb.actions.TestMessageStore"/> </actions> ...