You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2012/06/02 20:40:22 UTC

[jira] [Commented] (CAMEL-5234) Spring-WS does neither set message body nor message headers if exchange is not outCapable

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

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

Yes the response from Spring-WS should be used regardless of the MEP pattern. Only if the actual invoked web service method is a OneWay web service, then it should not use the response from the WS. eg bottom line its the nature of the WS method that dictates this, not the MEP flag in Camel.
                
> 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