L.S., The special characters in the message look as if there is a problem converting the message from bytes into a more suitable format. Could you try sending the XML as a TextMessage instead of BytesMessage? If you're using Camel 2.0, you could also specify the jmsMessageType on the jms: consumer endpoint to convert the message into a String when it is being received on the queue. Either one of those solutions should allow us to get a more human- (and hopefully also computer-) readable format earlier on in the processing.
Regards, Gert Vanthienen ------------------------ Open Source SOA: http://fusesource.com Blog: http://gertvanthienen.blogspot.com/ 2009/11/17 lekkie <[email protected]>: > > I tried the soucetransformer sample and I have the same error. > > See attached a section of my servicemix log. > > Notice the special xters in the "Exchange[BodyType:byte[]" > > http://old.nabble.com/file/p26386177/servicemix-backup.log > servicemix-backup.log > > > > Gert Vanthienen wrote: >> >> L.S., >> >> You can get this exception when you're actually reading invalid bytes, >> but in my experience you usually get this when you're reading XML as >> UTF-8 while it has actually been creating with another encoding. I'm >> not entirely sure how this can happen with the snippet of code you're >> showing us, Does the SOAPMessage with the System.out.println statement >> look OK? What OS are you running this on -- perhaps the underlying OS >> uses another encoding by default? >> >> Could you try rewriting the snippet using ServiceMix' >> SourceTransformer class? That one has been configured with a charset >> of UTF-8 and has helper methods to help you create the Document from a >> StringSource without having to work with the low-level byte streams >> that might mess up the encoding. Something like this: >> SourceTransformer transformer = new SourceTransformer(); >> Document document = transformer.toDOMDocument(new StringSource(req)); >> >> Regards, >> >> Gert Vanthienen >> ------------------------ >> Open Source SOA: http://fusesource.com >> Blog: http://gertvanthienen.blogspot.com/ >> >> >> >> 2009/11/16 lekkie <[email protected]>: >>> >>> I am trying to send a SOAP mesage over JMS and I got the following error >>> msg: >>> >>> >>> 12:37:55,792 | WARN | enerContainer-25 | ResolverUtil >>> | >>> g.apache.camel.util.ResolverUtil 517 | Could not find class >>> 'org/apache/activemq/camel/converter/ActiveMQConverter.class' in any >>> classloaders: [BundleDelegatingClassLoader for [Service Consumer (JMS) >>> (college-jms)] >>> >>> 12:37:56,401 | ERROR | -cxf-se-thread-2 | JBIDispatcherUtil >>> | >>> e.servicemix.cxfse.CxfSeEndpoint 390 | error preparing message >>> javax.xml.transform.TransformerException: >>> com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: >>> Invalid byte 2 of 3-byte UTF-8 sequence. >>> at >>> com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:756) >>> >>> 12:37:56,401 | ERROR | -cxf-se-thread-2 | CxfSeComponent >>> | >>> icemix.common.AsyncBaseLifeCycle 480 | Error processing exchange >>> org.apache.servicemix.jbi.runtime.impl.inouti...@c7c991 >>> java.io.IOException: >>> com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: >>> Invalid byte 2 of 3-byte UTF-8 sequence. >>> at >>> org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:164) >>> >>> here is the xml data sent: >>> >>> String req = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + >>> "<ser:NotifyPaymentRequest >>> xmlns:ser=\"http://services.com\">" >>> + >>> "<StudentNumber>91283123</StudentNumber>" + >>> "<TxnDateTime>20082734</TxnDateTime>" + >>> "<PINReceiptNumber>dgf322343</PINReceiptNumber>" + >>> "<StudentName>asdasd asds</StudentName>" + >>> "<AmountPaid>900</AmountPaid>" + >>> "<FeeName>sdfsdfd</FeeName>" + >>> "<Session>sdfdsf</Session>" + >>> "<Semester>asdsdfs</Semester>" + >>> "<PaymentReferenceNumber>safsdfd</PaymentReferenceNumber>" >>> + >>> "<BankName>asfdsad</BankName>" + >>> "<BranchName>asdasd</BranchName>" + >>> "<CollegeName>asdas</CollegeName>" + >>> "</ser:NotifyPaymentRequest>"; >>> >>> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); >>> factory.setNamespaceAware(true); >>> byte reqXMLButes[] = req.getBytes(); >>> ByteArrayInputStream byteArrayInputStream = new >>> ByteArrayInputStream(reqXMLButes); >>> >>> DocumentBuilder builder = factory.newDocumentBuilder(); >>> Document document = builder.parse(byteArrayInputStream); >>> // Document document = builder.parse( new >>> File("src/PaydirectNotifyPaymentRequest.xml") ); >>> SOAPBody soapBody = soapMessage.getSOAPBody(); >>> SOAPBodyElement docElement = soapBody.addDocument(document); >>> soapMessage.saveChanges(); >>> Message m = >>> MessageTransformer.SOAPMessageIntoJMSMessage(soapMessage, sendSession); >>> System.out.println("Display the SOAP message"+m); >>> sender.send(m); >>> >>> >>> kr. >>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Invalid-byte-2-of-3-byte-UTF-8-sequence-tp26370700p26370700.html >>> Sent from the ServiceMix - User mailing list archive at Nabble.com. >>> >>> >> >> >> ----- >> --- >> Gert Vanthienen >> http://gertvanthienen.blogspot.com >> > > -- > View this message in context: > http://old.nabble.com/Invalid-byte-2-of-3-byte-UTF-8-sequence-tp26370700p26386177.html > Sent from the ServiceMix - User mailing list archive at Nabble.com. > >
