Hi Claus: Thanks in advance.
After changed to use different uri, both a1 and a2 can be printed correctly, however I found another problem, *If I stored this value into requestContext with a static kay*, then all request has the same value. for example changed CustomDefaultCxfBinding as below class CustomDefaultCxfBinding extends DefaultCxfBinding { private String a; public CustomDefaultCxfBinding(String a) { this.a = a; setHeaderFilterStrategy(new CxfHeaderFilterStrategy()); } @Override public void populateCxfRequestFromExchange(org.apache.cxf.message.Exchange cxfExchange, Exchange camelExchange, Map<String, Object> requestContext) { *requestContext.put("ZZZZZ", **a);* super.populateCxfRequestFromExchange(cxfExchange,camelExchange, requestContext); } } then the value of *"ZZZZZ" in requestContext will always be a1* when sending the request. so I can't get the right value corresponding to each request. 2013/9/6 liugang594 Liu <clevers...@gmail.com> > but it's not a bug? because all endpoint have the same CxfBinding instance > even I specified individually. > > > 2013/9/6 Claus Ibsen <claus.ib...@gmail.com> > >> Hi >> >> The url is the same in the endpoint(url) so you get the same instance. >> And then afterwards you set the custom cxf binding. You need 2 >> different urls, so its 2 different endpoint instances. Or you can >> crate the cxf endpoints using java code, with the new constructor. >> >> On Fri, Sep 6, 2013 at 5:36 AM, liugang594 Liu <clevers...@gmail.com> >> wrote: >> > Hi All: >> > >> > I found the CxfProducer object will be cached to reuse in Camel, however >> > this may can's suatable for any time, to make things simple, assume we >> have >> > below route: >> > >> > class CustomDefaultCxfBinding extends DefaultCxfBinding { >> > private String a; >> > public CustomDefaultCxfBinding(String a) { >> > this.a = a; >> > setHeaderFilterStrategy(new CxfHeaderFilterStrategy()); >> > } >> > >> > @Override >> > public void >> populateCxfRequestFromExchange(org.apache.cxf.message.Exchange >> > cxfExchange, >> > Exchange camelExchange, Map<String, Object> requestContext) { >> > System.out.println(a); >> > super.populateCxfRequestFromExchange(cxfExchange,camelExchange, >> > requestContext); >> > } >> > } >> > >> > String url = "..."; >> > CxfEndpoint cxfEndpoint1 = (CxfEndpoint) endpoint(url); >> > cxfEndpoint1.setCxfBinding(new CustomDefaultCxfBinding("a1")); >> > CxfEndpoint cxfEndpoint2 = (CxfEndpoint) endpoint(url); >> > cxfEndpoint2.setCxfBinding(new CustomDefaultCxfBinding("a2")); >> > >> > from("timer:foo?repeatCount=1") >> .setBody(constant(content)).to(cxfEndpoint1) >> > .setBody(constant(content)).to(cxfEndpoint2); >> > >> > >> > both "a1" and "a2" are expected to be printed, but only "a2" for now. >> > >> > Does anybody knows how to handle this situation? >> > Thanks alot >> > >> > >> > -- >> > Thanks >> > GangLiu >> > Mail: clevers...@gmail.com >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> Email: cib...@redhat.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> > > > > -- > Thanks > GangLiu > Mail: clevers...@gmail.com > > -- Thanks GangLiu Mail: clevers...@gmail.com