MessagePackコーディング機能テストコード補完
2737 ワード
李林峰の「netty権威ガイド第2版」の123ページでは、著者は以前のEchoServerとEchoClientを改造し、同時にカスタムMsgpackEncoderとMsgpackDecoderコーデッククラスを作成した.pojoオブジェクトを転送するコーデック機能をテストし、clien側を改造した後、123ページの下でサービス側コードがクライアントと似ていると述べ、参考書に添付されているソースコードを参照してください.しかし、ソースコードにはこのセクションはありません.初心者が本の例をテストしたい場合は、一時的には書けません.ここを参考にすると、実は簡単です.EchoServerはほとんど動かず、EchoServer Handlerのコードだけを変更します.
またテスト中にpojoオブジェクトクラス(本ではUserInfo)に@Message注釈を付けないとメッセージが届かず、作者が忘れたのか、注釈が属するクラス
また、EchoClientHandlerでサービス側にpojoオブジェクトを送信、MesagePackコーデック後、EchoServerHandlerのchannelReadメソッドで印刷されたmsgがpojoオブジェクトのtoStringメソッドの内容は、直接msgをUserInfoに変換することはできません.そうしないとjavaに報告されます.lang.ClassCastException: org.msgpack.type.ArrayValueImpl cannot be cast to UserInfo
リストに移動すると、リストをループし、リストを印刷します.get(0)出力null,印刷list.get(0).getName()レポートorg.msgpack.type.NilValue cannot be cast to UserInfo;リストを直接出力するとmsgを出力する効果と同じです.
参照先:http://blog.csdn.net/u012247397/article/details/52396257
public class EchoServerHandler extends ChannelHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
System.out.println("server receive the msgpack message : "+msg+"");
//
ctx.writeAndFlush(msg);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
cause.printStackTrace();
//
ctx.close();
}
}
またテスト中にpojoオブジェクトクラス(本ではUserInfo)に@Message注釈を付けないとメッセージが届かず、作者が忘れたのか、注釈が属するクラス
import org.msgpack.annotation.Message;
また、EchoClientHandlerでサービス側にpojoオブジェクトを送信、MesagePackコーデック後、EchoServerHandlerのchannelReadメソッドで印刷されたmsgがpojoオブジェクトのtoStringメソッドの内容は、直接msgをUserInfoに変換することはできません.そうしないとjavaに報告されます.lang.ClassCastException: org.msgpack.type.ArrayValueImpl cannot be cast to UserInfo
リストに移動すると、リストをループし、リストを印刷します.get(0)出力null,印刷list.get(0).getName()レポートorg.msgpack.type.NilValue cannot be cast to UserInfo;リストを直接出力するとmsgを出力する効果と同じです.
参照先:http://blog.csdn.net/u012247397/article/details/52396257