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

Reply via email to