Hi William, It works when I changed code as you suggested. Thanks a lot.
Jackey 2008/11/21 Willem Jiang <[EMAIL PROTECTED]> > Hi > > Oh, here is a thing when you invoke the bean method, the method's return > value will be set into the exchange's out message, > So you got the converter not found exception. > That is a side effect of your get the <recipientList> with a bean > invocation. > > You may change to use a processor to set message header for the > recipienList to walk around this issue. > > <camelContext id="camelContext" useJmx="true" > xmlns="http://activemq.apache.org/camel/schema/spring"> > <route> > <from > uri="jbi:endpoint: > > http://mm.service.integration.symphony/BillingServiceCamelRouter/BillingServicePort > " /> > <processor ref="myProcessor"/> > <recipientList> > <header>MyRecipientList</header> > </recipientList> > </route> > </camelContext> > > public class MyProcessor implements Processor { > > public void process(Exchange exchange) throws Exception { > Message message = exchange.getIn(); > message.setHeader("MyRecipientList", YOULIST); > } > > } > > Willem > > > Jackey Ding wrote: > > Hi william, > > > > Yes, I changed route method as Claus said. The error still happen. > > > > Claus, > > > > I am using camel 1.5.0. > > > > > > 2008/11/21 Claus Ibsen <[EMAIL PROTECTED]> > > > >> Hi > >> > >> /Claus Ibsen > >> Apache Camel Committer > >> Blog: http://davsclaus.blogspot.com/ > >> > >> > >> > >> On Thu, Nov 20, 2008 at 3:25 PM, Willem Jiang <[EMAIL PROTECTED]> > >> wrote: > >>> Did you change your bean's route method as Claus suggested ? > >>> @RecipientList > >>> public String[] route(Exchange exchange) { > >>> System.out.println(exchange.getIn().getBody()); > >>> return new String[]{"jbi:endpoint: > >>> > http://mm.service.integration.symphony/BillingService/BillingServicePort > >>> "}; > >>> } > >>> > >>> Willem > >> Hi > >> > >> Gert V. fixed something with this missing type converter within the > >> last month or so. What version of Camel are you using? Might be > >> worthwile to check the commit logs or give gertv a ping as he might > >> remeber what it was. > >> > >> It was something with using servicemix and camel together. > >> > >> > >>> Jackey Ding wrote: > >>>> Hi, > >>>> > >>>> Here is my servicemix.xml, and I have pasted my router bean in > >> preciously > >>>> post. > >>>> > >>>> <beans xmlns="http://www.springframework.org/schema/beans" > >>>> xmlns:sm="http://servicemix.apache.org/config/1.0" > >>>> xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0" > >>>> xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0" > >>>> xmlns:bean="http://servicemix.apache.org/bean/1.0" > >>>> xmlns:camel="http://activemq.apache.org/camel/schema/spring" > >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >>>> xmlns:bill="http://mm.service.integration.symphony" > >>>> xsi:schemaLocation=" > >> > http://www.springframework.org/schema/beansclasspath:xmlschema/spring-beans-2.5.xsd > >>>> > >> > http://servicemix.apache.org/config/1.0classpath:xmlschema/servicemix.xsd > >>>> > >> > http://servicemix.apache.org/cxfse/1.0classpath:xmlschema/servicemix-cxf-se.xsd > >>>> > >> > http://servicemix.apache.org/cxfbc/1.0classpath:xmlschema/servicemix-cxf-bc.xsd > >>>> > >> > http://servicemix.apache.org/bean/1.0classpath:xmlschema/servicemix-bean.xsd > >>>> > >> > http://activemq.apache.org/camel/schema/springclasspath:xmlschema/camel-spring.xsd > >> "> > >>>> <sm:container id="jbiContainer" embedded="true"> > >>>> <sm:activationSpecs> > >>>> <sm:activationSpec id="servicemix-camel" > >>>> service="bill:BillingServiceCamelRouter" > >>>> endpoint="BillingServicePort"> > >>>> <sm:component> > >>>> <ref bean="jbi" /> > >>>> </sm:component> > >>>> </sm:activationSpec> > >>>> </sm:activationSpecs> > >>>> <sm:endpoints> > >>>> <cxfse:endpoint id="BillingService" useJBIWrapper="false"> > >>>> <cxfse:inFaultInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingInInterceptor" /> > >>>> </cxfse:inFaultInterceptors> > >>>> <cxfse:inInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingInInterceptor" /> > >>>> </cxfse:inInterceptors> > >>>> <cxfse:outFaultInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> > >>>> </cxfse:outFaultInterceptors> > >>>> <cxfse:outInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> > >>>> </cxfse:outInterceptors> > >>>> <cxfse:pojo> > >>>> <bean > >>>> > >>>> class="symphony.integration.service.mm.LppBillingServiceImpl" /> > >>>> </cxfse:pojo> > >>>> </cxfse:endpoint> > >>>> <cxfbc:consumer > >>>> > >>>> wsdl="classpath:symphony/integration/service/mm/BillingService.wsdl" > >>>> > >>>> interfaceName="symphony.integration.service.mm.BillingService" > >>>> targetEndpoint="BillingServicePort" > >>>> targetService="bill:BillingServiceCamelRouter" > >>>> useJBIWrapper="false"> > >>>> <cxfbc:inFaultInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingInInterceptor" /> > >>>> </cxfbc:inFaultInterceptors> > >>>> <cxfbc:inInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingInInterceptor" /> > >>>> </cxfbc:inInterceptors> > >>>> <cxfbc:outFaultInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> > >>>> </cxfbc:outFaultInterceptors> > >>>> <cxfbc:outInterceptors> > >>>> <bean > >>>> > >>>> class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> > >>>> </cxfbc:outInterceptors> > >>>> </cxfbc:consumer> > >>>> </sm:endpoints> > >>>> </sm:container> > >>>> > >>>> <bean id="jbi" > >>>> class="org.apache.servicemix.camel.CamelJbiComponent" /> > >>>> > >>>> <bean id="router" > >>>> class="symphony.integration.service.mm.BillingServiceRouter" > /> > >>>> > >>>> <camelContext id="camelContext" useJmx="true" > >>>> xmlns="http://activemq.apache.org/camel/schema/spring"> > >>>> <route> > >>>> <from > >>>> uri="jbi:endpoint: > >>>> > >> > http://mm.service.integration.symphony/BillingServiceCamelRouter/BillingServicePort > >> " > >>>> /> > >>>> <recipientList> > >>>> <methodCall bean="router" method="route"/> > >>>> </recipientList> > >>>> </route> > >>>> </camelContext> > >>>> </beans> > >>>> > >>>> Jackey > >>>> > >>>> 2008/11/20 Willem Jiang <[EMAIL PROTECTED]> > >>>> > >>>>> Can you show us your DSL ? > >>>>> I can't image how this string can be turned into a Source Object, may > >> be > >>>>> you just put the recipientlist into the message body instead of > setting > >>>>> it into the message header. > >>>>> > >>>>> Willem > >>>>> > >>>>> Jackey Ding wrote: > >>>>>> Hi, > >>>>>> > >>>>>> I traced error, the real serivce provider is return the correct > >> message > >>>>> to > >>>>>> camel, but camel not pass the message to the client. > >>>>>> The exception is thrown at method > >> DefaultTypeConverter.convertTo(Class<T> > >>>>>> type, Exchange exchange, Object value); because it could not find > >>>>> suitable > >>>>>> conversion. Here is the paramter value: > >>>>>> > >>>>>> type Class<T> (javax.xml.transform.Source) (id=90) > >>>>>> > >>>>>> exchange JbiExchange (id=91) > >>>>>> binding JbiBinding (id=97) > >>>>>> context SpringCamelContext (id=100) > >>>>>> exception null > >>>>>> exchangeId null > >>>>>> fault null > >>>>>> in JbiMessage (id=113) > >>>>>> messageExchange InOutImpl (id=114) > >>>>>> out JbiMessage (id=99) > >>>>>> pattern ExchangePattern (id=116) > >>>>>> properties ConcurrentHashMap<K,V> (id=118) > >>>>>> unitOfWork DefaultUnitOfWork (id=121) > >>>>>> > >>>>>> value [0] "jbi:endpoint: > >>>>>> > >> > http://mm.service.integration.symphony/BillingService/BillingServicePort > >>>>> " > >>>>>> jackey > >>>>>> > >>>>>> 2008/11/20 Jackey Ding <[EMAIL PROTECTED]> > >>>>>> > >>>>>>> BTW, I find the route method was executed 6 times. > >>>>>>> > >>>>>>> Jackey > >>>>>>> > >>>>>>> 2008/11/20 Jackey Ding <[EMAIL PROTECTED]> > >>>>>>> > >>>>>>> Hi, > >>>>>>>> I tried code you pasted, here is the message. > >>>>>>>> > >>>>>>>> 2008-11-20 19:53:48 > org.apache.cxf.interceptor.LoggingInInterceptor > >>>>>>>> logging > >>>>>>>> infor: Inbound Message > >>>>>>>> ---------------------------- > >>>>>>>> Encoding: > >>>>>>>> Headers: > >>>>>>>> Messages: > >>>>>>>> Message: > >>>>>>>> > >>>>>>>> Payload: <?xml version="1.0" encoding="UTF-8"?><soap:Envelope > >>>>> xmlns:soap=" > >>>>>>>> http://schemas.xmlsoap.org/soap/envelope/ > >>>>> "><soap:Body><ns1:getBillingCount > >>>>>>>> xmlns:ns1="http://mm.service.integration.symphony"><arg0 > >>>>>>>> xmlns=""><beginRowIndex xmlns="">0</beginRowIndex><entityPage > >>>>>>>> xmlns=""><beginRowIndex xmlns="">0</beginRowIndex><rowSize > >>>>>>>> xmlns="">10</rowSize></entityPage><rowSize > >>>>> xmlns="">10</rowSize><billingNo > >>>>> > >> > xmlns="">KP0000000005</billingNo></arg0></ns1:getBillingCount></soap:Body></soap:Envelope> > >>>>>>>> -------------------------------------- > >>>>>>>> 2008-11-20 19:53:48 > >>>>>>>> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback > >>>>> onClose > >>>>>>>> info: Outbound Message > >>>>>>>> --------------------------- > >>>>>>>> Encoding: UTF-8 > >>>>>>>> Headers: > >>>>>>>> Messages: > >>>>>>>> Payload: <soap:Envelope xmlns:soap=" > >>>>>>>> http://schemas.xmlsoap.org/soap/envelope/ > >>>>> "><soap:Body><ns1:getBillingCountResponse > >>>>>>>> xmlns:ns1="http://mm.service.integration.symphony > >>>>>>>> > >> > "><return>1</return></ns1:getBillingCountResponse></soap:Body></soap:Envelope> > >>>>>>>> -------------------------------------- > >>>>>>>> 2008-11-20 19:53:48 org.apache.camel.processor.Logger log > >>>>>>>> error: Failed delivery for exchangeId: > >>>>>>>> ID-mycomputer/1988-1227182024906/0-0. On delivery attempt: 0 > caught: > >>>>>>>> org.apache.camel.language.bean.RuntimeBeanExpressionException: > >> Failed > >>>>> to > >>>>>>>> invoke method: route on router due to: > >>>>>>>> org.apache.camel.NoTypeConversionAvailableException: No type > >> converter > >>>>>>>> available to convert from type: class [Ljava.lang.String; to the > >>>>> required > >>>>>>>> type: javax.xml.transform.Source with value > >> [Ljava.lang.String;@e8709d > >>>>>>>> org.apache.camel.language.bean.RuntimeBeanExpressionException: > >> Failed > >>>>> to > >>>>>>>> invoke method: route on router due to: > >>>>>>>> org.apache.camel.NoTypeConversionAvailableException: No type > >> converter > >>>>>>>> available to convert from type: class [Ljava.lang.String; to the > >>>>> required > >>>>>>>> type: javax.xml.transform.Source with value > >> [Ljava.lang.String;@e8709d > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:79) > >>>>>>>> at > >>>>>>>> > >> org.apache.camel.processor.RecipientList.process(RecipientList.java:58) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:75) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:172) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:93) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:63) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:47) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.camel.CamelProviderEndpoint.handleActiveProviderExchange(CamelProviderEndpoint.java:115) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.camel.CamelProviderEndpoint.process(CamelProviderEndpoint.java:73) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:554) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) > >>>>>>>> at > >>>>>>>> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > >>>>>>>> at > >>>>>>>> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > >>>>>>>> at java.lang.Thread.run(Thread.java:595) > >>>>>>>> Caused by: org.apache.camel.NoTypeConversionAvailableException: No > >> type > >>>>>>>> converter available to convert from type: class > [Ljava.lang.String; > >> to > >>>>> the > >>>>>>>> required type: javax.xml.transform.Source with value > >>>>>>>> [Ljava.lang.String;@e8709d > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:117) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.util.ExchangeHelper.convertToType(ExchangeHelper.java:180) > >>>>>>>> at > >>>>>>>> > >> > org.apache.servicemix.camel.JbiBinding.convertBodyToJbi(JbiBinding.java:61) > >>>>>>>> at > >>>>> org.apache.servicemix.camel.JbiMessage.setBody(JbiMessage.java:159) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:125) > >>>>>>>> at > >>>>>>>> > >> > org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:76) > >>>>>>>> ... 21 more > >>>>>>>> [EMAIL PROTECTED] > >>>>>>>> > >>>>>>>> The message in red is system printout. > >>>>>>>> > >>>>>>>> BTW, I am using camel 1.5.0. > >>>>>>>> > >>>>>>>> > >>>>>>>> Jackey > >>>>>>>> > >>>>>>>> 2008/11/20 Claus Ibsen <[EMAIL PROTECTED]> > >>>>>>>> > >>>>>>>>> Hi Try with this > >>>>>>>>> > >>>>>>>>>> @RecipientList > >>>>>>>>>> public String[] route(Exchange exchange) { > >>>>>>>>>> System.out.println(exchange.getIn().getBody()); > >>>>>>>>>> return new String[]{"jbi:endpoint: > >>>>>>>>>> > >> > http://mm.service.integration.symphony/BillingService/BillingServicePort > >>>>>>>>> "}; > >>>>>>>>>> } > >>>>>>>>> /Claus Ibsen > >>>>>>>>> Apache Camel Committer > >>>>>>>>> Blog: http://davsclaus.blogspot.com/ > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Thu, Nov 20, 2008 at 9:34 AM, Jackey Ding < > >> [EMAIL PROTECTED]> > >>>>>>>>> wrote: > >>>>>>>>>> Hi, > >>>>>>>>>> > >>>>>>>>>> Here is my bean. > >>>>>>>>>> > >>>>>>>>>> public class BillingServiceRouter{ > >>>>>>>>>> > >>>>>>>>>> @RecipientList > >>>>>>>>>> public String[] route(String body) { > >>>>>>>>>> System.out.println(body); > >>>>>>>>>> return new String[]{"jbi:endpoint: > >>>>>>>>>> > >> > http://mm.service.integration.symphony/BillingService/BillingServicePort > >>>>>>>>> "}; > >>>>>>>>>> } > >>>>>>>>>> } > >>>>>>>>>> > >>>>>>>>>> Jackey > >>>>>>>>>> > >>>>>>>>>> 2008/11/20 Claus Ibsen <[EMAIL PROTECTED]> > >>>>>>>>>> > >>>>>>>>>>> Hi > >>>>>>>>>>> > >>>>>>>>>>> What does your bean look like? > >>>>>>>>>>>> <methodCall bean="router" method="route"/> > >>>>>>>>>>> I think the issue is that the payload from servicemix is XML > and > >>>>> Camel > >>>>>>>>>>> will try to find coerce the payload to the type you have > defined > >> in > >>>>>>>>>>> your bean. > >>>>>>>>>>> > >>>>>>>>>>> So you can change the signature to use Exchange as type then > >> there > >>>>>>>>>>> shouldn't take any type conventions place. > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> /Claus Ibsen > >>>>>>>>>>> Apache Camel Committer > >>>>>>>>>>> Blog: http://davsclaus.blogspot.com/ > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> On Thu, Nov 20, 2008 at 9:11 AM, Jackey Ding < > >> [EMAIL PROTECTED] > >>>>>>>>>>> wrote: > >>>>>>>>>>>> Hi, > >>>>>>>>>>>> > >>>>>>>>>>>> I want to wirte a bean dynamically determine what endpoints > will > >> be > >>>>>>>>>>> invoked > >>>>>>>>>>>> when a service is called. It seems that dynamic recipientlist > >> can > >>>>>>>>> meet my > >>>>>>>>>>>> demand. I wrote a simple method just return a string as > endpoint > >>>>>>>>> name, > >>>>>>>>>>> and > >>>>>>>>>>>> got the error message as below: > >>>>>>>>>>>> > >>>>>>>>>>>> info: Outbound Message > >>>>>>>>>>>> --------------------------- > >>>>>>>>>>>> Encoding: UTF-8 > >>>>>>>>>>>> Headers: > >>>>>>>>>>>> Messages: > >>>>>>>>>>>> Payload: <soap:Envelope xmlns:soap=" > >>>>>>>>>>>> http://schemas.xmlsoap.org/soap/envelope/ > >>>>>>>>>>> "><soap:Body><ns1:getBillingCountResponse > >>>>>>>>>>>> xmlns:ns1="http://mm.service.integration.symphony > >>>>>>>>>>>> > >> > "><return>1</return></ns1:getBillingCountResponse></soap:Body></soap:Envelope> > >>>>>>>>>>>> -------------------------------------- > >>>>>>>>>>>> 2008-11-20 15:36:36 org.apache.camel.processor.Logger log > >>>>>>>>>>>> error: Failed delivery for exchangeId: > >>>>>>>>>>> ID-mycomputer/3353-1227166593020/0-0. > >>>>>>>>>>>> On delivery attempt: 0 caught: > >>>>>>>>>>>> org.apache.camel.language.bean.RuntimeBeanExpressionException: > >>>>>>>>> Failed to > >>>>>>>>>>>> invoke method: route on router due to: > >>>>>>>>>>>> org.apache.camel.NoTypeConversionAvailableException: No type > >>>>>>>>> converter > >>>>>>>>>>>> available to convert from type: class [Ljava.lang.String; to > the > >>>>>>>>> required > >>>>>>>>>>>> type: javax.xml.transform.Source with value > >>>>>>>>> [Ljava.lang.String;@1f3329a > >>>>>>>>>>>> org.apache.camel.language.bean.RuntimeBeanExpressionException: > >>>>>>>>> Failed to > >>>>>>>>>>>> invoke method: route on router due to: > >>>>>>>>>>>> org.apache.camel.NoTypeConversionAvailableException: No type > >>>>>>>>> converter > >>>>>>>>>>>> available to convert from type: class [Ljava.lang.String; to > the > >>>>>>>>> required > >>>>>>>>>>>> type: javax.xml.transform.Source with value > >>>>>>>>> [Ljava.lang.String;@1f3329a > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:79) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >>>>> > org.apache.camel.processor.RecipientList.process(RecipientList.java:58) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:75) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:172) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:93) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:63) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:47) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.camel.CamelProviderEndpoint.handleActiveProviderExchange(CamelProviderEndpoint.java:115) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.camel.CamelProviderEndpoint.process(CamelProviderEndpoint.java:73) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:554) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > >>>>>>>>>>>> at java.lang.Thread.run(Thread.java:595) > >>>>>>>>>>>> Caused by: > org.apache.camel.NoTypeConversionAvailableException: > >> No > >>>>>>>>> type > >>>>>>>>>>>> converter available to convert from type: class > >> [Ljava.lang.String; > >>>>>>>>> to > >>>>>>>>>>> the > >>>>>>>>>>>> required type: javax.xml.transform.Source with value > >>>>>>>>>>>> [Ljava.lang.String;@1f3329a > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:117) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.util.ExchangeHelper.convertToType(ExchangeHelper.java:180) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.servicemix.camel.JbiBinding.convertBodyToJbi(JbiBinding.java:61) > >>>>>>>>>>>> at > >>>>>>>>> > org.apache.servicemix.camel.JbiMessage.setBody(JbiMessage.java:159) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:125) > >>>>>>>>>>>> at > >>>>>>>>>>>> > >> > org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:76) > >>>>>>>>>>>> ... 21 more > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> my configuration is > >>>>>>>>>>>> <bean id="router" > >>>>>>>>>>>> > >> class="symphony.integration.service.mm.BillingServiceRouter" > >>>>>>>>> /> > >>>>>>>>>>>> <camelContext id="camelContext" useJmx="true" > >>>>>>>>>>>> xmlns="http://activemq.apache.org/camel/schema/spring > "> > >>>>>>>>>>>> <route> > >>>>>>>>>>>> <from > >>>>>>>>>>>> uri="jbi:endpoint: > >>>>>>>>>>>> > >> > http://mm.service.integration.symphony/BillingServiceCamelRouter/BillingServicePort > >>>>>>>>>>> " > >>>>>>>>>>>> /> > >>>>>>>>>>>> <recipientList> > >>>>>>>>>>>> <methodCall bean="router" method="route"/> > >>>>>>>>>>>> </recipientList> > >>>>>>>>>>>> </route> > >>>>>>>>>>>> </camelContext> > >>>>>>>>>>>> > >>>>>>>>>>>> my bean, just return a string. > >>>>>>>>>>>> @RecipientList > >>>>>>>>>>>> public String[] route(String body) { > >>>>>>>>>>>> return new String[]{"jbi:endpoint: > >>>>>>>>>>>> > >> > http://mm.service.integration.symphony/BillingService/BillingServicePort > >>>>>>>>>>> "}; > >>>>>>>>>>>> } > >>>>>>>>>>>> > >>>>>>>>>>>> It's weird, when change config to point-to-point mode it works > >>>>> fine. > >>>>>>>>>>>> <route> > >>>>>>>>>>>> <from > >>>>>>>>>>>> uri="jbi:endpoint: > >>>>>>>>>>>> > >> > http://mm.service.integration.symphony/BillingServiceCamelRouter/BillingServicePort > >>>>>>>>>>> " > >>>>>>>>>>>> /> > >>>>>>>>>>>> <to > >>>>>>>>>>>> uri="jbi:endpoint: > >>>>>>>>>>>> > >> > http://mm.service.integration.symphony/BillingService/BillingServicePort > >>>>>>>>> " > >>>>>>>>>>> /> > >>>>>>>>>>>> </route> > >>>>>>>>>>>> > >>>>>>>>>>>> Thanks & best regards > >>>>>>>>>>>> > >>> > > > >
