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

ASF GitHub Bot commented on CAMEL-12252:
----------------------------------------

GitHub user xldai opened a pull request:

    https://github.com/apache/camel/pull/2218

    fix CAMEL-12252 and add test case for it

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/xldai/camel master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/camel/pull/2218.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #2218
    
----
commit 80be0842ea7696066c7d570cc537e270d738d503
Author: xldai <xldai@...>
Date:   2018-02-10T06:41:24Z

    fix CAMEL-12252 and add test case for it

----


> 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
>            Priority: Major
>
> 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)

Reply via email to