Hi I am just guessing. Maybe you need Mina's default ObjectSerializationCodec on both ends? Both client and server are using Mina? I don't know.
Have you tried the Mina user forum? Med venlig hilsen Claus Ibsen ...................................... Silverbullet Skovsgårdsvænget 21 8362 Hørning Tlf. +45 2962 7576 Web: www.silverbullet.dk -----Original Message----- From: Conrad Pilloud [mailto:[EMAIL PROTECTED] Sent: 4. september 2008 21:34 To: camel-user@activemq.apache.org Subject: MINA Deserialization fails with Negative dataLength Hi, I'm trying to set up a Camel Route that reads and deserializes objects from a socket. I'm deriving this from the camel-spring example program. However, MINA Deserialization fails with Negative dataLength. I looked at the Camel and MINA user forums and found nothing like this. Thanks Conrad p.s. In the meanwhile, I'll look at building my own custom MINA codec for using a length-protocol on a byte-array wrapping the Object Stream, like I had to do with Mule Here's the pertinent output: 14094 [AnonymousIoService-1] WARN org.apache.camel.component.mina.MinaConsumer$ReceiveHandler - [/127.0.0.1:3086] Unexpe cted exception from exceptionCaught handler. org.apache.camel.CamelException: org.apache.mina.filter.codec.ProtocolDecoderException: org.apache.mina.common.BufferDat aException: dataLength: -1393754107 (Hexdump: AC ED 00 05 73 72 00 18 63 6F 6D 2E 66 6F 6F 2E 73 69 72 2E 44 6F 6D 61 69 6E 4F 62 6A 65 63 74 05 3C E6 61 EE C4 B8 10 02 00 09 49 00 03 63 49 64 4A 00 08 64 74 67 5F 6D 73 65 63 43 00 04 65 78 65 72 44 00 01 66 4A 00 02 69 64 4A 00 02 6C 61 4A 00 02 6C 6F 4C 00 02 63 63 74 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 00 03 73 49 64 71 00 7E 00 01 78 70 00 00 03 E8 00 00 01 1C 2E B9 05 8B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 41 41 71 00 7E 00 03 73 71 00 7E 00 00 00 00 03 E9 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 42 42 71 00 7E 00 05 73 71 00 7E 00 00 00 00 03 EA 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 43 43 71 00 7E 00 07 73 71 00 7E 00 00 00 00 03 EB 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 44 44 71 00 7E 00 09 73 71 00 7E 00 00 00 00 03 EC 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 45 45 71 00 7E 00 0B) at org.apache.camel.component.mina.MinaConsumer$ReceiveHandler.exceptionCaught(MinaConsumer.java:85) at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.exceptionCaught(AbstractIoFilterChain.java:564) at org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345) at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643) at org.apache.mina.common.IoFilterAdapter.exceptionCaught(IoFilterAdapter.java:75) at org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345) at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643) at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:224) at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.lang.Thread.run(Thread.java:619) Caused by: org.apache.mina.filter.codec.ProtocolDecoderException: org.apache.mina.common.BufferDataException: dataLength : -1393754107 (Hexdump: AC ED 00 05 73 72 00 18 63 6F 6D 2E 66 6F 6F 2E 73 69 72 2E 44 6F 6D 61 69 6E 4F 62 6A 65 63 74 05 3C E6 61 EE C4 B8 10 02 00 09 49 00 03 63 49 64 4A 00 08 64 74 67 5F 6D 73 65 63 43 00 04 65 78 65 72 44 00 01 66 4A 00 02 69 64 4A 00 02 6C 61 4A 00 02 6C 6F 4C 00 02 63 63 74 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 00 03 73 49 64 71 00 7E 00 01 78 70 00 00 03 E8 00 00 01 1C 2E B9 05 8B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 41 41 71 00 7E 00 03 73 71 00 7E 00 00 00 00 03 E9 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 42 42 71 00 7E 00 05 73 71 00 7E 00 00 00 00 03 EA 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 43 43 71 00 7E 00 07 73 71 00 7E 00 00 00 00 03 EB 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 44 44 71 00 7E 00 09 73 71 00 7E 00 00 00 00 03 EC 00 00 01 1C 2E B9 05 9B 00 00 40 6F 40 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 74 00 02 45 45 71 00 7E 00 0B) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:165) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648) at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220) ... 5 more Caused by: org.apache.mina.common.BufferDataException: dataLength: -1393754107 at org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:1631) at org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:88) at org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:158) ... 9 more Here's the RouteBuilder Main...I've set up my MINA route here: package com.foo.sir; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.spring.Main; import static org.apache.camel.builder.xml.XPathBuilder.xpath; /** * A Camel Router * * @version $ */ public class MyRouteBuilder extends RouteBuilder { /** * A main() so we can easily run these routing rules in our IDE */ public static void main(String... args) { Main.main(args); } /** * Lets configure the Camel routing rules using Java code... */ public void configure() { from("mina:tcp://localhost:9860").process(new Processor() { public void process(Exchange exchange) throws Exception { DomainObject body = exchange.getIn().getBody(DomainObject.class); System.out.println("Got a TCP body: " + body.toString()); } }); } } Here's the Camel Context...Nothing Special here: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd"> <camelContext xmlns="http://activemq.apache.org/camel/schema/spring"> <package>com.foo.sir</package> </camelContext> </beans> Here's the Socket Client that I'm serializing the objects with. Nothing Special here either. package com.foo.sir; import java.io.IOException; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.Date; public class MiniSocketClient { public static void main(String[] args) { MiniSocketClient m = new MiniSocketClient(); m.spew(args.length == 1 ? args[0] : "localhost", args.length == 2 ? args[1] : "9860"); } protected void spew(String hostname, String port) { Socket s = null; String[] seriesTable = { "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ"}; try { s = new Socket(hostname, Integer.parseInt(port)); ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream()); //spew out 5 DomainObjects for (int i = 0; i<5; i++) { DomainObject d = new DomainObject(); d.setId(i); Date now = new Date(); d.setDtg_msec(now.getTime()); d.setLa(1L); d.setLo(1L); d.setF(250.0); d.setCc(seriesTable[i]); d.setSId(seriesTable[i]); d.setCId(1000 + i); System.out.println("Generating and sending A DomainObject: " + d.getCc()); oos.writeObject(d); oos.flush(); } } catch (IOException e) { System.err.println(e); e.printStackTrace(); } finally { // cleanup try { if (s != null) s.close(); } catch (IOException ignoreMe) { // nothing } } } } Finally, here's the object I'm trying to pass over the socket. package com.foo.sir; import java.io.Serializable; public class DomainObject implements Serializable { private static final long serialVersionUID = 377429777084364816L; private long id; private long dtg_msec; private long la; private long lo; private double f; private String cc; private String sId; private int cId; private char exer; //snipped a bunch of setters and getters public String toString() { StringBuilder sb = new StringBuilder(); sb.append(this.id + "|" + this.dtg_msec + "|"); sb.append(this.la + "|" + this.lo + "|" + this.f); sb.append("|" + this.cc + "|" + this.sId + "|" + this.cId + "|" + this.exer); return sb.toString(); } } -- View this message in context: http://www.nabble.com/MINA-Deserialization-fails-with-Negative-dataLength-tp19318349s22882p19318349.html Sent from the Camel - Users mailing list archive at Nabble.com.