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