[ 
https://issues.apache.org/jira/browse/CAMEL-5234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13288127#comment-13288127
 ] 

Claus Ibsen commented on CAMEL-5234:
------------------------------------

Yes.

Normally the response is set on the IN message if its NOT out capable.

if OUT capable
  set response OUT
else
  set response IN

But in the world of WS you can have OneWay which is a bit special WS. Normally 
they are request/reply over WS.


                
> Spring-WS does neither set message body nor message headers if exchange is 
> not outCapable
> -----------------------------------------------------------------------------------------
>
>                 Key: CAMEL-5234
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5234
>             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=\"http://example.com/\";>" //
>                         + "       <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 Pattern
>                 .setBody().simple("<ex:getExampleResponse 
> xmlns:ex=\"http://example.com/\";>" //
>                         + "       <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: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to