2008/11/4 TomStrummer <[EMAIL PROTECTED]>:
>
> Thanks  James!  I actually didn't see that data format page, but that's
> incredibly helpful.  I haven't been able to find a good reference for the
> routebuilder DSL (or the XML, for that matter).
>
> Anyway, my routes now look like the following:
>
>        from("timer://tutorial?fixedRate=true&delay=3000&period=10000")
>                .to("bean:bidRetriever")
>                .marshal().serialization()
>
> .to("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:provider");
>
>
> from("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:consumer")
>                .unmarshal().serialization()
>                .to("bean:bidPersistence")
>                .to("log:tom-bidList");
>
> and I get the following exception in the ServiceMix console:
>
> [Fatal Error] :1:1: Content is not allowed in prolog.
> ERROR - JmsComponent                   - Error processing exchange InOnly[
>  id: ID:172.16.10.203-11d68451ce3-2:0
>  status: Active
>  role: provider
>  endpoint: provider
>  in: Unable to display: org.xml.sax.SAXParseException: Content is not
> allowed in prolog.
> ]
> org.springframework.jms.UncategorizedJmsException: Uncategorized exception
> occured during JMS processing; nested exception is javax.jms.JMSException:
> Failed to create JMS Message: javax.xml.transform.TransformerException:
> org.xml.sax.SAXParseException: Content is not allowed in prolog.; nested
> exception is javax.xml.transform.TransformerException:
> org.xml.sax.SAXParseException: Content is not allowed in prolog.
> Caused by:
> javax.jms.JMSException: Failed to create JMS Message:
> javax.xml.transform.TransformerException: org.xml.sax.SAXParseException:
> Content is not allowed in prolog.
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.createMessage(JmsProviderEndpoint.java:358)
>        at
> org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:507)
>        at
> org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:487)
>        at
> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
>        at
> org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:484)
>        at
> org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:470)
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnly(JmsProviderEndpoint.java:371)
>        at
> org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:100)
>        at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
>        at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
>        at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>        at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
>        at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>        at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
>        at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>        at java.lang.Thread.run(Thread.java:619)
> Caused by: javax.xml.transform.TransformerException:
> org.xml.sax.SAXParseException: Content is not allowed in prolog.
>        at
> org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:501)
>        at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toResult(SourceTransformer.java:125)
>        at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toResult(SourceTransformer.java:103)
>        at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toString(SourceTransformer.java:140)
>        at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.contentToString(SourceTransformer.java:161)
>        at
> org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler.createMessage(DefaultProviderMarshaler.java:52)
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.createMessage(JmsProviderEndpoint.java:352)
>        ... 17 more
> Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
>        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>        at
> org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
>        ... 23 more
>
>
> Is that because JBI requires the message to be in XML?

Yes.

So stick to JMS endpoints if you wanna use serialization. Or use
xstream if you wanna use JBI and/or XML messages

http://activemq.apache.org/camel/xstream.html

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Reply via email to