我目前正在深入研究 Apache MINA。这是一个很棒的框架,具有很多功能。到目前为止最难的部分是解码器部分。检查api文档我了解到有以下类可以扩展和实现自己的类:
- DemushingProtocolDecoder - 一个复合 ProtocolDecoder,它将传入的 IoBuffer 解码请求多路分解为适当的 MessageDecoder。
- ObjectSerializationDecoder - 使用 IoBuffer.getObject(ClassLoader) 反序列化可序列化 Java 对象的 ProtocolDecoder。
- PrefixedStringDecoder - 使用固定长度前缀解码字符串的 ProtocolDecoder。
以上所有内容都扩展了 CumulativeProtocolDecoder 类 - 一个 ProtocolDecoder,它将接收到的缓冲区的内容累积到累积缓冲区中,以帮助用户实现解码器。
- 您能否用一些现实世界的示例来提及您将使用或曾经使用的 CumulativeProtocolDecoder 的子类以及原因?
- 有没有一个例子,不需要解码器扩展CumulativeProtocolDecoder类,直接实现ProtocolDecoder而不用担心碎片?
最佳答案
我在我的应用程序中使用 DemushingProtocolDecoder 类的实例。在 org.apache.mina.filter.codec.demux
包下,有一些可用于解码消息的接口(interface)和类。有一个名为 MessageDecoder
的接口(interface)。创建您自己的类来实现此接口(interface),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.
}
}
关于java - Apache MINA 解码器类解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562270/