camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-5234) Spring-WS does neither set message body nor message headers if exchange is not outCapable
Date Sun, 03 Jun 2012 09:36:22 GMT

    [ 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

        

Mime
View raw message