Hi Willem, some minor tests passed today so it looks quite good. I'm probably ready for a "full" test tomorrow. But right now this looks really promising.
Regards, Achim 2011/10/10 Willem Jiang <willem.ji...@gmail.com> > Hi Achim, > > Did you have a chance to try to set the request context header of address ? > You can override the endpoint address by using it. > > > On Fri Oct 7 21:07:14 2011, Achim Nierbeck wrote: > >> Ok, this only solved half of my problem or better it postponed it. >> >> Now I do have the following scenario: >> >> >> Call for Service on Host A works as expected, >> the Endpoint is stored in the cache. >> >> Call for Service on Host B does create a new Endpoint >> and this one is also stored in the cache. >> >> Now a third call to a service on Host A ends up on endpoint B >> somehow the Cache returns endpoint B for requesting EndpointKey made up of >> URI for Host A. >> >> Any help is welcome since this now is turning into a Major bug for me :( >> >> Thanx, Achim >> >> >> 2011/9/30 Achim Nierbeck<bcanhome@googlemail.**com<bcanh...@googlemail.com> >> > >> >> The suggested workaround by Jon really does the trick. >>> >>> instead of using the recipientlist inside the spring route: >>> >>> <camel:recipientList parallelProcessing="true"> >>> >>> >>> <camel:simple>cxf:bean:**productionServer?address=${** >>> header.address}</camel:simple> >>> </camel:recipientList> >>> >>> I used a std. bean which looks like the following: >>> >>> public class WebServiceRecipientListBean { >>> >>> @RecipientList(**parallelProcessing=true) >>> public String route(@Header("address") String address) { >>> if (address == null) >>> return null; >>> >>> return "cxf:bean:productionServer?**address="+address; >>> } >>> >>> } >>> >>> This pretty much did the trick. >>> >>> Thanks a lot for the fast help and regards, Achim >>> >>> 2011/9/29 Jon Anstey<jans...@gmail.com>: >>> >>>> FYI created >>>> https://issues.apache.org/**jira/browse/CAMEL-4503<https://issues.apache.org/jira/browse/CAMEL-4503>for >>>> the >>>> recipient list bug and Achim is trying out another approach to >>>> workaround >>>> this issue. >>>> >>>> On Thu, Sep 29, 2011 at 11:46 AM, Achim Nierbeck< >>>> >>> bcanh...@googlemail.com>wrote: >>> >>>> >>>> I did take a look at the sources and I think I found the >>>>> root of my problem, though I'm not sure how to get around it: >>>>> >>>>> RecipientList class contains a producer cache, >>>>> in this cache the RecipientListProcessor class does store the >>>>> endpoints depending on the uri as key. >>>>> Now since only my header changes I don't know how to get around this. >>>>> Any ideas? >>>>> >>>>> Thanks in advance, Achim >>>>> >>>>> 2011/9/29 Achim >>>>> Nierbeck<bcanhome@googlemail.**com<bcanh...@googlemail.com> >>>>> >: >>>>> >>>>>> Ok, >>>>>> >>>>>> some more worrying details. >>>>>> >>>>>> Right now I have two Remote Hosts >>>>>> After a successful run on Host A a second run is done (not parallel >>>>>> but sequential) on Host B. >>>>>> And I'm able to see that the header.address is set to host B still I >>>>>> see that the request is made on Host A. >>>>>> >>>>>> Is this intentional, are there any ways of not "remembering" which >>>>>> call did go to which Host? >>>>>> >>>>>> Thanks again, Achim >>>>>> >>>>>> 2011/9/29 Achim >>>>>> Nierbeck<bcanhome@googlemail.**com<bcanh...@googlemail.com> >>>>>> >: >>>>>> >>>>>>> Hi >>>>>>> >>>>>>> using Camel 2.8.0 I'm having the following scenario. >>>>>>> I'm using the CXF for connecting to a couple .NET Webservices. >>>>>>> >>>>>>> <!-- CXF config --> >>>>>>> <cxf:cxfEndpoint id="productionServer" >>>>>>> >>>>>>> serviceClass="net.**testservices.**productionservice._2011_07.** >>>>> IService" >>>>> >>>>>> endpointName="s:**basicHttpProductionService" >>>>>>> >>>>>> serviceName="s:**ProductionService" >>>>> >>>>>> wsdlURL="classpath:/wsdl/_1.**wsdl" xmlns:s=" >>>>>>> >>>>>> http://tempuri.org/" >>>>> >>>>>> xmlns:a=" >>>>>>> >>>>>> http://schemas.microsoft.com/**2003/10/Serialization/Arrays<http://schemas.microsoft.com/2003/10/Serialization/Arrays> >>>>> " >>>>> >>>>>> >>>>>> xmlns:i="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance> >>>>>>> "> >>>>>>> <cxf:properties> >>>>>>> <entry key="dataFormat" value="POJO" /> >>>>>>> </cxf:properties> >>>>>>> <cxf:outInterceptors> >>>>>>> <ref bean="loggingOutInterceptor" /> >>>>>>> </cxf:outInterceptors> >>>>>>> </cxf:cxfEndpoint> >>>>>>> >>>>>>> >>>>>>> Now I have a route for looking up some data in the DB for example >>>>>>> >>>>>> also >>> >>>> looking for a free >>>>>>> WebService to call: >>>>>>> >>>>>>> <camel:route id="pollQueue"> >>>>>>> <camel:from >>>>>>> >>>>>> uri="timer://pollQueueTimer?**fixedRate=true&period=**30000" /> >>>>> >>>>>> >>>>>>> ... do preparation .... >>>>>>> ... also set the address of the remote host into the header of the >>>>>>> >>>>>> exchange ... >>>>> >>>>>> ... call the "production" route ... >>>>>>> >>>>>>> <camel:to >>>>>>> >>>>>> uri="seda:production" >>> >>>> /> >>>>> >>>>>> </camel:route> >>>>>>> >>>>>>> the production route does call the Webservice on the available remote >>>>>>> host as follows >>>>>>> >>>>>>> ... again a couple of preparations beforehand .... >>>>>>> >>>>>>> <!-- Altering Body to contain no data --> >>>>>>> <camel:setBody> >>>>>>> <camel:mvel>[ ]</camel:mvel> >>>>>>> </camel:setBody> >>>>>>> >>>>>>> <!-- service call --> >>>>>>> <camel:setHeader headerName="operationName"> >>>>>>> >>>>>>> <camel:constant>ProduceData</**camel:constant> >>>>> >>>>>> </camel:setHeader> >>>>>>> >>>>>>> ... the address of the remote webservice was previously added to the >>>>>>> header in the starting route ... >>>>>>> >>>>>>> >>>>>>> ... I needed to set the parallelProcessing to true, if not everything >>>>>>> fails because the Timer Route tries to start another recipientList >>>>>>> >>>>>> ... >>> >>>> >>>>>>> <camel:recipientList >>>>>>> >>>>>> parallelProcessing="true"> >>> >>>> >>>>>>> >>>>> <camel:simple>cxf:bean:**productionServer?address=${** >>> header.address}</camel:simple> >>> >>>> </camel:recipientList> >>>>>>> >>>>>>> ... some more calls checking data, errorhandling and so forth .... >>>>>>> >>>>>>> >>>>>>> Now the following happened to me when I had more than one Remote Host >>>>>>> available: >>>>>>> >>>>>>> Calls to Host A did run on Host B >>>>>>> Results expecting to be retrieved from Host A where polled from Host >>>>>>> >>>>>> B. >>> >>>> Now I wonder if the calls to certain Methods are cached or if the >>>>>>> "re-running" timmer route does >>>>>>> interfere somehow with the already running route. >>>>>>> >>>>>>> A Complete run of a route can take up to about 30 Minutes after that >>>>>>> the "Production"-Route is done. >>>>>>> Since there are multiple hosts available we want to do parallel >>>>>>> >>>>>> processing. >>>>> >>>>>> >>>>>>> Any hints are welcome, >>>>>>> >>>>>>> Achim >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> -- >>>>>>> *Achim Nierbeck* >>>>>>> >>>>>>> >>>>>>> Apache Karaf<http://karaf.apache.org/**> Committer& PMC >>>>>>> >>>>>>> OPS4J Pax >>>>>>> Web<http://wiki.ops4j.org/**display/paxweb/Pax+Web/<http://wiki.ops4j.org/display/paxweb/Pax+Web/> >>>>>>> > >>>>>>> Committer& Project Lead >>>>>>> blog<http://notizblog.**nierbeck.de/ <http://notizblog.nierbeck.de/> >>>>>>> > >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> -- >>>>>> *Achim Nierbeck* >>>>>> >>>>>> >>>>>> Apache Karaf<http://karaf.apache.org/**> Committer& PMC >>>>>> >>>>>> OPS4J Pax >>>>>> Web<http://wiki.ops4j.org/**display/paxweb/Pax+Web/<http://wiki.ops4j.org/display/paxweb/Pax+Web/> >>>>>> > >>>>>> Committer& Project Lead >>>>>> blog<http://notizblog.**nierbeck.de/ <http://notizblog.nierbeck.de/>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> -- >>>>> *Achim Nierbeck* >>>>> >>>>> >>>>> Apache Karaf<http://karaf.apache.org/**> Committer& PMC >>>>> >>>>> OPS4J Pax >>>>> Web<http://wiki.ops4j.org/**display/paxweb/Pax+Web/<http://wiki.ops4j.org/display/paxweb/Pax+Web/> >>>>> > >>>>> Committer& Project Lead >>>>> blog<http://notizblog.**nierbeck.de/ <http://notizblog.nierbeck.de/>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Cheers, >>>> Jon >>>> --------------- >>>> FuseSource >>>> Email: j...@fusesource.com >>>> Web: fusesource.com >>>> Twitter: jon_anstey >>>> Blog: http://janstey.blogspot.com >>>> Author of Camel in Action: http://manning.com/ibsen >>>> >>>> >>> >>> >>> -- >>> -- >>> *Achim Nierbeck* >>> >>> >>> Apache Karaf<http://karaf.apache.org/**> Committer& PMC >>> >>> OPS4J Pax >>> Web<http://wiki.ops4j.org/**display/paxweb/Pax+Web/<http://wiki.ops4j.org/display/paxweb/Pax+Web/> >>> > >>> Committer& Project Lead >>> blog<http://notizblog.**nierbeck.de/ <http://notizblog.nierbeck.de/>> >>> >>> >> >> >> > > -- > Willem > ------------------------------**---- > FuseSource > Web: http://www.fusesource.com > Blog: > http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English) > http://jnn.javaeye.com (Chinese) > Twitter: willemjiang > Weibo: willemjiang > -- -- *Achim Nierbeck* Apache Karaf <http://karaf.apache.org/> Committer & PMC OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer & Project Lead blog <http://notizblog.nierbeck.de/>