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/