camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Müller (JIRA) <>
Subject [jira] [Commented] (CAMEL-5234) Spring-WS does neither set message body nor message headers if exchange is not outCapable
Date Mon, 04 Jun 2012 13:00:23 GMT


Christian Müller commented on CAMEL-5234:

Babak, could you please start a general discussion about this on dev@.
My understanding is the following:
If a component provides integration for e.g. spring-ws and execute a request which will receive
a respone, this component should check the MEP and put the respone into the out message if
the MEP is "put capable" or replace the in message if not (and also the headers and attachments
of course).
> Spring-WS does neither set message body nor message headers if exchange is not outCapable
> -----------------------------------------------------------------------------------------
>                 Key: CAMEL-5234
>                 URL:
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-spring-ws
>    Affects Versions: 2.7.5, 2.8.4, 2.9.2
>            Reporter: Benjamin Gniza
>            Assignee: Babak Vahdat
>              Labels: in, out, out-capable, response, spring-ws
>             Fix For: 2.9.3, 2.10.0
> Spring-WS component does not behave as expected from pipes and filters pattern if exchange
is not _outCapable_.
> If _ExchangeHelper_._isOutCapable_ returns false for the given _exchange_ the IN-message
is returned instead of the WS-Response.
> Example:
> {code:title=ExampleRoute}
>         from("timer://foo?fixedRate=true&period=1000")//
>                 .setBody().simple("<ex:getExampleResponse xmlns:ex=\"\">"
>                         + "       <id>1</id>" //
>                         + "     </ex:getExampleResponse>")//
>                 .to("spring-ws:http://localhost:9000/Example")//
>                 .to("file://responses");
> {code}
> In the example above I would expect the WS-response written to the files in the responses
directory. Currently (since 2.7.3) the IN message is written to the files.
> This is caused by _SpringWebserviceProducer#process_ because it only sets headers and
body for the OUT-message if _isOutCapable_ is _true_.
> Workaround (maybe this has side effects!):
> {code:title=ExampleRoute}
>                 from("timer://foo?fixedRate=true&period=1000")//
>                 .setExchangePattern(ExchangePattern.InOut) // <-- Override with InOut
>                 .setBody().simple("<ex:getExampleResponse xmlns:ex=\"\">"
>                         + "       <id>1</id>" //
>                         + "     </ex:getExampleResponse>")//
>                 .to("spring-ws:http://localhost:9000/Example")//
>                 .to("file://responses");
> {code}
> This behavior has been implemented to fix CAMEL-3974. From my point of view its counter
intuitive since other processing-steps don't check the exchange's _outCapability_.
> It took me several hours to find out why I always got the IN message back, although the
webservice was called correctly and returned correct results.
> Maybe an option should be provided to control this behavior. At least a log-message should
be written to explain, that the webservice-reponse is thrown away.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message