camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem jiang <willem.ji...@gmail.com>
Subject Re: XML to JSON using XMLJSON - BufferDataException
Date Tue, 12 Nov 2013 06:25:59 GMT
As you are send Text message, I think you can use http instead of the TCP message to send the
XML message and receive the JSON data.
If you just want to test the XmlJsonDataFormat , you can just prepare String with XML message
and check if the result is what you want.  


--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Monday, November 11, 2013 at 5:19 PM, Malathi G wrote:

> Hi,
>  
> I am trying to convert XML into JSON format using XMLJson in TCP client
> server program. I am having three files - TCPClient, TCPServer and CamelDemo
> class. In between client and server, i am using CamelDemo class for
> conversion. It shows BufferDataFormat Exception in CamelDemo class. This is
> my code  
>  
>  
> *TCPClient Code:*
> public class TCPClient {
> public static void main(String[] args) throws IOException {
> Socket clientsoc = null;
> PrintWriter out = null;
> String inputMsg = null;
> try {
> clientsoc = new Socket("localhost", 6789);
>  
> inputMsg="<Root><firstName>xxx</firstName><lastName>yyy</lastName></Root>";
> out = new
> PrintWriter(clientsoc.getOutputStream(), true);
> out.println(inputMsg);
>  
> InputStream is = clientsoc.getInputStream();
> InputStreamReader isr = new InputStreamReader(is);
> BufferedReader br = new BufferedReader(isr);
> String receivedMsg = br.readLine();
> System.out.println("Message received from server is "
> + receivedMsg);
>  
> }
> catch (Exception e) {
> e.printStackTrace();
>  
> } finally {
> out.close();
> clientsoc.close();
> out = null;
> inputMsg = null;
> }
> }
> }
>  
>  
> *TCPServer Code:*
> public class TCPServer  
> {
> public static void main(String[] args)  
> {
> Socket socket =null;
> try
> {
>  
> int port = 6123;
> ServerSocket serverSocket = new ServerSocket(port);
> System.out.println("Server Started and listening to the port
> 6123");
> while(true)  
> {
> socket = serverSocket.accept();
> InputStream is = socket.getInputStream();
> InputStreamReader isr = new InputStreamReader(is);
> BufferedReader br = new BufferedReader(isr);
> String receivedMsg = br.readLine();
> System.out.println("Message received from client is
> "+receivedMsg);
>  
> String returnMessage=receivedMsg;
> PrintWriter out = new PrintWriter(socket.getOutputStream(),
> true);
> out.println(returnMessage);
> System.out.println("Message sent to the client is
> "+returnMessage);
> out.flush();
> }
> }
> catch (Exception e)  
> {
> e.printStackTrace();
> }
> finally
> {
> try
> {
> socket.close();
> }
> catch(Exception e){}
> }
> }
> }
>  
>  
> *CamelDemo Code:*
> public class CamelDemo {
> static CamelContext context = null;
> public static void main(String[] s) {
> try {
> context = new DefaultCamelContext();
> final XmlJsonDataFormat xmlJsonFormat=new XmlJsonDataFormat();
> xmlJsonFormat.setEncoding("UTF-8");
> xmlJsonFormat.setForceTopLevelObject(true);
> xmlJsonFormat.setTrimSpaces(true);
> xmlJsonFormat.setRootName("Root");
> xmlJsonFormat.setSkipNamespaces(true);
> xmlJsonFormat.setRemoveNamespacePrefixes(true);
> xmlJsonFormat.setExpandableProperties(Arrays.asList("d", "e"));
>  
> Component component = new org.apache.camel.component.mina.MinaComponent();
> context.addComponent("tcp", component);
> context.addRoutes(new RouteBuilder() {
> public void configure() {
> from("mina:tcp://localhost:6789?textline=false&sync=true")
> .marshal(xmlJsonFormat)
> .process(new Processor() {
> // consumer
> public void process(Exchange e) {
> try {
> // Request message from client
> String inMsg = (String) e.getIn().getBody();
> System.out.println("******"+inMsg+"******");
> // Configuring Destination
> Endpoint endpoint =
> context.getEndpoint("mina:tcp://127.0.0.1:6123?textline=false&sync=true");
> Exchange exchange = endpoint.createExchange(ExchangePattern.InOut);
> Message in
> = exchange.getIn();
> in.setBody(inMsg);
> Producer
> producer = endpoint.createProducer();
>  
> producer.start();
>  
> producer.process(exchange);
>  
> // Response message from destination
> Message out = exchange.getOut();
> e.getOut().setBody(out);
> producer.stop();
> } catch (Exception e1) {
> e1.printStackTrace();
> }
>  
> }
> });//.to("mina:tcp://127.0.0.1:6123?sync=true");
> }
>  
> });
>  
> context.start();
> Thread.sleep(10000000);
> context.stop();
>  
> } catch (Throwable ex) {
> ex.printStackTrace();
> }
> }
> }
>  
>  
> *Exception:*
> 14:04:16.350 [SocketAcceptorIoProcessor-0.0] DEBUG
> o.a.m.filter.executor.ExecutorFilter - Launching thread for /127.0.0.1:51299
> 14:04:16.350 [Camel (camel-1) thread #3 - MinaThreadPool] DEBUG
> o.a.m.filter.executor.ExecutorFilter - Exiting since queue is empty for
> /127.0.0.1:51299
> 14:04:16.350 [SocketAcceptorIoProcessor-0.0] DEBUG
> o.a.m.filter.executor.ExecutorFilter - Launching thread for /127.0.0.1:51299
> 14:04:16.350 [Camel (camel-1) thread #3 - MinaThreadPool] DEBUG
> o.a.c.component.mina.MinaConsumer - Closing session as an exception was
> thrown from MINA
> 14:04:16.366 [Camel (camel-1) thread #3 - MinaThreadPool] WARN  
> o.a.c.c.m.MinaConsumer$ReceiveHandler - [/127.0.0.1:51299] Unexpected
> exception from exceptionCaught handler.
> org.apache.camel.CamelException:
> org.apache.mina.filter.codec.ProtocolDecoderException:
> org.apache.mina.common.BufferDataException: dataLength: 1012035439 (Hexdump:
> 3C 52 6F 6F 74 3E 3C 66 69 72 73 74 4E 61 6D 65 3E 78 78 78 3C 2F 66 69 72
> 73 74 4E 61 6D 65 3E 3C 6C 61 73 74 4E 61 6D 65 3E 79 79 79 3C 2F 6C 61 73
> 74 4E 61 6D 65 3E 3C 2F 52 6F 6F 74 3E 0D 0A)
> at
> org.apache.camel.component.mina.MinaConsumer$ReceiveHandler.exceptionCaught(MinaConsumer.java:91)
> ~[camel-mina-2.11.1.jar:2.11.1]
> at
> org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.exceptionCaught(AbstractIoFilterChain.java:564)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:224)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
> [mina-core-1.1.7.jar:na]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> [na:1.6.0_14]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> [na:1.6.0_14]
> at java.lang.Thread.run(Thread.java:619) [na:1.6.0_14]
> Caused by: org.apache.mina.filter.codec.ProtocolDecoderException:
> org.apache.mina.common.BufferDataException: dataLength: 1012035439 (Hexdump:
> 3C 52 6F 6F 74 3E 3C 66 69 72 73 74 4E 61 6D 65 3E 78 78 78 3C 2F 66 69 72
> 73 74 4E 61 6D 65 3E 3C 6C 61 73 74 4E 61 6D 65 3E 79 79 79 3C 2F 6C 61 73
> 74 4E 61 6D 65 3E 3C 2F 52 6F 6F 74 3E 0D 0A)
> at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:165)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
> [mina-core-1.1.7.jar:na]
> at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:228)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:198)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:45)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:485)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
> ~[mina-core-1.1.7.jar:na]
> ... 3 common frames omitted
> Caused by: org.apache.mina.common.BufferDataException: dataLength:
> 1012035439
> at
> org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:1631)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:88)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
> ~[mina-core-1.1.7.jar:na]
> at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:158)
> ~[mina-core-1.1.7.jar:na]
> ... 14 common frames omitted
> 14:04:16.366 [Camel (camel-1) thread #3 - MinaThreadPool] DEBUG
> o.a.m.filter.executor.ExecutorFilter - Exiting since queue is empty for
> /127.0.0.1:51299
>  
> Please help me to solve this exception
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/XML-to-JSON-using-XMLJSON-BufferDataException-tp5743019.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).




Mime
View raw message