0

現在、Apache MINA を掘り下げています。多くの機能を備えた優れたフレームワークです。今までで一番大変だったのはデコーダー部分です。APIドキュメントを確認すると、自分自身を拡張して実装できる次のクラスがあることがわかりました。

  1. DemuxingProtocolDecoder - 着信 IoBuffer デコード要求を適切な MessageDecoder に逆多重化する複合 ProtocolDecoder。
  2. ObjectSerializationDecoder - IoBuffer.getObject(ClassLoader) を使用してシリアライズ可能な Java オブジェクトをデシリアライズする ProtocolDecoder。
  3. PrefixedStringDecoder - 固定長のプレフィックスを使用して String をデコードする 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 に答える