Ok, So I decided to go back to the drawing board and decided to run some
tests.

First, I implemented a very simple decoder that contains the following code:

@Override 
    protected boolean doDecode(IoSession is, IoBuffer ib,
ProtocolDecoderOutput pdo) throws Exception { 
  
    System.out.println("IoBuffer hasRemaining: " + ib.hasRemaining());
    System.out.println("IoBuffer remaining: " + ib.remaining());
    byte[] data = new byte[ib.remaining()];
    ib.get(data);
    System.out.println("IoBuffer read: " + new String(data));
    
    return true;
    
}

Then I implemented my route in the camel-context as...

      <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
        <camel:route>
            <camel:from
uri="mina2:tcp://10.5.60.60:9000?codec=#gilbarcoDecoder" />
            <camel:bean ref="testBean"/>
        </camel:route>
  </camel:camelContext>

When I run this it will successfully read the input and output the received
message to the console. However when I change the route to..

  <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
        <camel:route>
            <camel:from
uri="mina2:tcp://10.5.60.60:9000?disconnectOnNoReply=false;codec=#gilbarcoDecoder"
/>
            <camel:bean ref="testBean"/>
        </camel:route>
  </camel:camelContext>

Then I get the following error message and it never calls the doDecode
method..
org.apache.camel.CamelException:
org.apache.mina.filter.codec.ProtocolDecoderException:
org.apache.mina.core.buffer.BufferDataException: dataLength: 1347375948
(Hexdump: REMOVED FOR BREVITY)
        at
org.apache.camel.component.mina2.Mina2Consumer$ReceiveHandler.exceptionCaught(Mina2Consumer.java:312)
        at
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.exceptionCaught(DefaultIoFilterChain.java:672)
        at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextExceptionCaught(DefaultIoFilterChain.java:461)
        at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1100(DefaultIoFilterChain.java:47)
        at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.exceptionCaught(DefaultIoFilterChain.java:760)
        at
org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:93)
        at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
        at
org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:769)
        at
org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:761)
        at
org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:703)
        at java.lang.Thread.run(Thread.java:722)


Not sure exactly why this is occurring.  Is it the way I have configured my
route?  Or is this a bug in the Mina2 2.11.1 component?

- Tim



--
View this message in context: 
http://camel.465427.n5.nabble.com/Mina-Synchronous-Communication-tp5737223p5737692.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to