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