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

Tadayoshi Sato commented on CAMEL-10429:
----------------------------------------

This issue appears to be a tip of a bigger iceberg: the header mapping code 
between CXF and Camel messages in {{camel-cxf}} and {{camel-cxf-transport}} is 
scattered around {{DefaultCxfRsBinding}}, {{CxfUtils}}, 
{{DefaultCxfMessageMapper}}, and {{CxfHeaderHelper}}. I confirmed that this 
issue can be resolved if the header mapping between CXF and Camel is just 
covered more exhaustively. So I think the correct resolution of this issue 
would involve refactorings of those {{DefaultCxfRsBinding}}, {{CxfUtils}}, 
{{DefaultCxfMessageMapper}}, and {{CxfHeaderHelper}} classes.

Working on a pull req for the fix.

> CXFRS client requires Exchange.HTTP_URI instead of HTTP_PATH for Camel 
> tranport
> -------------------------------------------------------------------------------
>
>                 Key: CAMEL-10429
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10429
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-cxfrs
>    Affects Versions: 2.18.0
>            Reporter: Tadayoshi Sato
>         Attachments: camel-cxf-transport.zip
>
>
> The [camel-cxfrs doc|http://camel.apache.org/cxfrs.html] writes that 
> {{HTTP_PATH}} is required for {{camel-cxfrs}} producer when it's used with 
> {{httpClientAPI}} option.
> {quote}
> The CXF JAXRS front end also provides a http centric client API. You can also 
> invoke this API from camel-cxfrs producer. *You need to specify the HTTP_PATH 
> and the HTTP_METHOD* and let the producer use the http centric client API by 
> using the URI option httpClientAPI or by setting the message header 
> CxfConstants.CAMEL_CXF_RS_USING_HTTP_API.
> {quote}
> However, when Camel transport is used between CXFRS producer and consumer, 
> the invocation succeeds only if it sets {{HTTP_URI}}, not {{HTTP_PATH}}, to 
> the header.
> {code:java}
>                 from("direct:input.camel")
>                     .setHeader(Exchange.HTTP_METHOD, constant("GET"))
>                     .setHeader(Exchange.CONTENT_TYPE, constant("text/plain"))
>                     .setHeader(Exchange.HTTP_URI, 
> simple("/greeting/hello/${body}"))
>                     //.setHeader(Exchange.HTTP_PATH, 
> simple("/greeting/hello/${body}")) // <- fails
>                     .inOut("cxfrs:bean:rsClient");
> {code}
> Otherwise it fails with {{404}} error.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to