You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Piotr Klimczak (JIRA)" <ji...@apache.org> on 2019/03/19 07:50:00 UTC

[jira] [Commented] (CAMEL-12252) Dynamic setting the DESTINATION_OVERRIDE_URL doesn't work on CXFRS producer

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

Piotr Klimczak commented on CAMEL-12252:
----------------------------------------

This change has introduced an inconsistency in the behaviour of Spring and Blueprint endpoints.
Also, Spring endpoint now ignores custom JAXRSClientFactoryBeans, correctly resolved by the CxfRsComponent.

Will raise separate issue.

> Dynamic setting the DESTINATION_OVERRIDE_URL doesn't work on CXFRS producer
> ---------------------------------------------------------------------------
>
>                 Key: CAMEL-12252
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12252
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-cxfrs
>    Affects Versions: 2.17.0, 2.18.5, 2.19.4, 2.20.2
>         Environment: Java 8
>            Reporter: Xilai Dai
>            Assignee: Alex Dettinger
>            Priority: Major
>             Fix For: 2.20.3, 2.21.1, 2.22.0
>
>
> Given the sample MyProcessor, setting the DESTINATION_OVERRIDE_URL dynamically during the invoke:
> {code}
> public void process(Exchange exchange) throws Exception {
>     String env = (String)exchange.getIn().getHeader("Environnement");
>     if (env.equalsIgnoreCase("DEV")) {
>         exchange.getIn().setHeader(exchange.DESTINATION_OVERRIDE_URL,
>             "http://esbdev11.local:8080/server1/metaServlet");
>     } else {
>         exchange.getIn().setHeader(exchange.DESTINATION_OVERRIDE_URL,
>             "http://esblab11.local:8080/server2/metaServlet");
>     }
> }
> {code}
> Given the sample Route:
> {code}
>         from("cxfrs:bean:MyREST")
>         .process(new HeaderProcessor())
>         .setHeader("Environnement")
>         .simple("${header.http_query[env][0]}")
>         .process(new MyProcessor())
>         .setHeader(org.apache.camel.Exchange.HTTP_METHOD, constant("GET"))
>         .setHeader(org.apache.camel.Exchange.ACCEPT_CONTENT_TYPE, constant("*/*"))
>         .setHeader(org.apache.camel.Exchange.HTTP_PATH, constant("/"))
>         .to("cxfrs:bean:restClient?maxClientCacheSize=5");
> {code}
> Send request to cxfrs:bean:MyREST with different http header "dev", then the cxfrs:bean:restClient always make call to the last setting Address.
> (Only it works as expected when setting maxClientCacheSize=0 on the cxfrs:bean:restClient)
> There is no this issue on Camel 2.16.x, but start problem from Camel 2.17.x and later versions. Investigations show that the CxfRsEndpoint becoming Singleton after CAMEL-9628, that explain why the last Address setting always applied.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)