0

我目前正在研究 Apache MINA。这是一个很棒的框架,有很多功能。到目前为止,最难的部分是解码器部分。检查 api 文档,我了解到有以下类可以扩展和实现自己的:

  1. DemuxingProtocolDecoder - 一种复合 ProtocolDecoder,它将传入的 IoBuffer 解码请求解复用到适当的 MessageDecoder 中。
  2. ObjectSerializationDecoder - 使用 IoBuffer.getObject(ClassLoader) 反序列化可序列化 Java 对象的 ProtocolDecoder。
  3. PrefixedStringDecoder - 使用固定长度前缀解码字符串的 ProtocolDecoder。

以上所有都扩展了CumulativeProtocolDecoder类 - 一个将接收缓冲区的内容累积到累积缓冲区的 ProtocolDecoder,以帮助用户实现解码器。

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

1 回答 1

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.
      }
}
于 2014-02-14T09:04:51.053 回答