让天下没有难学的技术

最近在学习Netty框架,对着教程上写了个简单的netty应用,可是死活调试不成功,对着程序跟教程上看了几遍也找不到原因,后来又重新写了一遍,服务端程序终于调试成功,原因出在了那个@Skip注释上了,代码如下:

这个实现类的每个方法上都有一个@Skip注释,去掉注释之后,程序调试成功,使用netty开发的服务端程序可以正常接收和处理客户端连接。

被这个注释坑了一天了,于是特地去看了netty的源码,以下是关于@Skip源码的说明:

大概意思就是说@Skip注释用来在实现了Handler的实现类中的方法上,程序运行过程中如果某个handler实现中的方法被@Skip注释了,则此方法不会被 ChannelPipeline 对象调用,所以,这就是为什么我的服务端程序死活调试不成功的原因。我们可以看看netty内部执行过程中是如何处理@Skip注释的,通过对源码文件全文扫苗,找到了对@Skip注释的处理都集中在了AbstractChannelHandlerContext中,下面贴出处理@Skip相关的方法源码:

相信不少netty初学者都会碰到此类问题吧,希望这篇文章能对大家有点帮助。

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Related Post

罗德尼·胡德

  声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。详情   罗德 […]

【解惑大师】回答C9所有疑难杂症尽管问吧!不定期在线。

中间停玩了很久了,最近又捡起来玩,公会也就剩自己一个人了,当单机刷,打发时间。 一、刷图梯队:(都有神书、经济 […]

法甲第5轮布雷斯特客场挑战昂热2:3未能取胜

北京时间2020年09月27日21点进行的法甲第5轮比赛,昂热主场对阵布雷斯特。 昂热的特劳雷,蒂奥卜,富尔基 […]