Jussi, You can download a SNAPSHOT version of the updated servicemix-camel component using Camel 2.0 at https://repository.apache.org/content/groups/snapshots-group/org/apache/servicemix/servicemix-camel/2009.02-SNAPSHOT/
Regards, Gert Vanthienen ------------------------ Open Source SOA: http://fusesource.com Blog: http://gertvanthienen.blogspot.com/ 2009/10/2 Jussi Nummelin <[email protected]>: > Hi Claus, > > Yep, we're using 1.6 version since it's the one packaged with > ServiceMix Camel component. :( > > I'll modify the code to use hte Processor concept. > > > Thanks a lot for the clarification. > > Cheers, > - Jussi - > > > On Fri, Oct 2, 2009 at 12:34 PM, Claus Ibsen <[email protected]> wrote: >> On Fri, Oct 2, 2009 at 11:27 AM, Jussi Nummelin >> <[email protected]> wrote: >>> Hi, >>> >>> We're hitting a bit peculiar Camel problem. >>> >>> We have our Camel route defined like this: >>> <bean id="enricher" class="SomeBean"/> >>> >>> <camelContext id="camelContext" useJmx="true" >>> xmlns="http://activemq.apache.org/camel/schema/spring"> >>> >>> <route> >>> <from uri="jbi:service:Notification"/> <!-- the "sender" endpoint, >>> e.g. a file poller --> >>> <bean ref="enricher" method="processExchange"/> >>> <to uri="jbi:service:Test" /> >>> </route> >>> >>> >>> So in practice what we want to do is to "enrich" the message before >>> giving it to another component. >>> >>> For some reason the call to our enricher bean fails with this message: >>> org.apache.camel.component.bean.AmbiguousMethodCallException: >>> Ambiguous method invocations possible: [public static void >>> SomeBean.print(javax.xml.transform.Source), public void >>> SomeBean.setDbServiceName(java.lang.String)] on the exchange: >>> Exchange[JbiMessage: >>> org.apache.servicemix.jbi.messaging.normalizedmessagei...@dbe4e5] >>> >>> Does this mean that what ever message we're passing is actually a >>> String object and thus Camel is trying to select a suitable void >>> xxx(String arg) type of method? As we have the method defined in the >>> route, why is Camel overriding it? >>> >>> Our processing method signature is: >>> public void processExchange(org.apache.camel.Exchange exchange); >>> >>> Any help appreciated. >>> >>> >>> Cheers, >>> - Jussi - >>> >> >> I assume you are using Camel 1.x which have a bug where even the >> method="xxx" does not always pick this method. >> Its fixed in 2.0 and maybe the latest 1.x as well (cant remember). >> >> You can work around this by having a single method in your bean or use >> a Processor instead. >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> >
