Apache MINA解码器类解释

时间:2013-09-01 19:51:40

标签: java apache-mina

我正在深入研究Apache MINA。这是一个具有很多功能的优秀框架。迄今为止最困难的部分是解码器部分。检查api文档我理解有以下类可以扩展并实现自己的类:

  1. DemuxingProtocolDecoder - 一个复合ProtocolDecoder,它将传入的IoBuffer解码请求解复用为适当的MessageDecoder。
  2. ObjectSerializationDecoder - 使用IoBuffer.getObject(ClassLoader)对Serializable Java对象进行反序列化的ProtocolDecoder。
  3. PrefixedStringDecoder - 使用固定长度前缀对String进行解码的ProtocolDecoder。
  4. 以上所有内容都扩展了 CumulativeProtocolDecoder 类 - 一个ProtocolDecoder,它将收到的缓冲区内容累积到累积缓冲区,以帮助用户实现解码器。

    • 您能否提及一些现实世界的例子,您将使用或使用CumulativeProtocolDecoder的子类以及为什么?
    • 是否有一个示例不需要解码器来扩展CumulativeProtocolDecoder类,只是直接实现ProtocolDecoder而不用担心碎片?

1 个答案:

答案 0 :(得分:1)

我在我的应用程序中使用了DemuxingProtocolDecoder类的实例。在包org.apache.mina.filter.codec.demux下,您可以使用一些接口和类来解码消息。有一个名为MessageDecoder的界面。创建自己的实现此接口的类,MINA将工作。像这样的东西,

public class MyDecoder implements MessageDecoder {
      public MessageDecoderResult decode(IoSession session, IoBuffer buffer, ProtocolDecoderOutput decoderOutput) throws Exception {
           /* Your
              decode
              mechanism */
           decoderOutput.write(message); // don't forget to write your decoded message object at some point.
           return MessageDecoder.OK; //or something else that matches your needs.
      }
}