Netty @Sharable

标有@Sharable的Handler,代表了他是一个可以被分享的handler,这就是说服务器注册了这个handler后,可以分享给多个客户端使用,如果没有使用该注解,则每次客户端请求时,都必须重新创建一个handler。

ex

  private NettyHandler nettyHandler = new NettyHandler();
    

  @Override
  protected void initChannel(SocketChannel sc) throws Exception {
    
    sc.pipeline().addLast(nettyHandler);
}

解决

  @Override    
 protected void initChannel(SocketChannel sc) throws Exception {
    
      sc.pipeline().addLast(new NettyHandler());
    
  }
@Sharable
public class NettyHandler extends SimpleChannelInboundHandler {}

正常情况下同一个ChannelHandler,的不同的实例会被添加到不同的Channel管理的管线里面的,但是如果你需要全局统计一些信息,比如所有连接报错次数(exceptionCaught)等,这时候你可能需要使用单例的ChannelHandler,需要注意的是这时候ChannelHandler上需要添加@Sharable注解。

https://blog.csdn.net/supper10090/article/details/78431948  源码解读参考

 

posted @   山河永慕~  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示