Hi,
As far I recall you can't add more than one ProtocolCodecFilter.
You should implements plain IoFilter for intermediate codec steps.

Julien

Le Thu, 12 May 2011 17:10:07 +0200,
François Hamard <[email protected]> a écrit :

> Up!
> I test the same code with Mina 2.0.2 and problem does not occurs.
> 
> Is someone can help me please?
> 
> Le 04/05/2011 13:03, François Hamard a écrit :
> > Hello,
> >
> > I test the new release of mina (2.0.3) and an error occurs on
> > serial transport when I send a message (Encoding). Here is the
> > error:
> >
> > Exception in thread "Thread-13" java.lang.ClassCastException: 
> > com.intesens.communication.messages.network.dongle.outgoing.DetectDongleMessage
> >  
> > cannot be cast to org.apache.mina.core.buffer.IoBuffer
> >     at 
> > org.apache.mina.transport.serial.SerialSessionImpl.flushWrites(SerialSessionImpl.java:178)
> >     at 
> > org.apache.mina.transport.serial.SerialSessionImpl.access$200(SerialSessionImpl.java:50)
> >     at 
> > org.apache.mina.transport.serial.SerialSessionImpl$WriteWorker.run(SerialSessionImpl.java:154)
> >
> > My context is a 3 layer codec:
> >
> > connector.getFilterChain().addLast(PROTOCOL_NAME_TRANSPORT,
> >                 new ProtocolCodecFilter(new 
> > TransportProtocolCodecFactory()));
> > connector.getFilterChain().addLast(PROTOCOL_NAME_INTERMEDIATE,
> >         new ProtocolCodecFilter(new DongleProtocolCodecFactory()));
> > connector.getFilterChain().addLast(PROTOCOL_NAME_BUSINESS,
> >                 new ProtocolCodecFilter(new 
> > BusinessProtocolCodecFactory()));
> >
> > After some research in code, it appears that when a message is 
> > encoded, the first layer to encode is the Business protocol. That's
> > OK. When it write to output, instead of given it to the
> > intermediate layer, it is given to the "Next Layer" which is
> > appears to be nothing because business layer is the last one.
> >
> > org.apache.mina.filter.codec.AbstractProtocolEncoderOutput.java:56
> >     messageQueue.offer(encodedMessage);
> >
> > org.apache.mina.filter.codec.ProtocolCodecFilter:461
> >     nextFilter.filterWrite(session, new 
> > EncodedWriteRequest(encodedMessage,
> >                             future, writeRequest.getDestination()));
> >
> > Do you know if it's a normal behavior? Do you see what changes
> > could have cause this issue?
> > Cordialy,
> > Francois
> >

Attachment: signature.asc
Description: PGP signature

Reply via email to