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)