[
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)