Netty ChannelHandler的生命周期

17 篇文章 0 订阅
17 篇文章 4 订阅

2016年拍摄于台湾省垦丁鹅銮鼻灯塔。

                                                                                        微信公众号

                                                    王皓的GitHub:https://github.com/TenaciousDWang  

 

        今天我们来看一下关于ChannelHandler的生命周期。其实就是ChannelHandler中定义的方法,也就是通常我们继承ChannelHandler类及子类或接口时,覆写的方法。

 

        

        我们将这个Handler放在服务端首位,然后看一下控制台打印顺序。

 

 

        首先启动服务端,控制台打印服务端启动中。端口[8000]绑定成功,接着我们启动客户端,现在我们客户端启动时会自动发送登陆请求数据,我们可以看到控制台打印顺序。

 

  1. handlerAdded()方法是指逻辑处理链在添加Handler时成功后回调的方法,表示当前处理链中添加了一个Handler。

 

     2.channelRegistered()方法指当一个连接建立一个连接后NIO会分配一个线程来管理这个连接,Hanlder已经绑定到该线程上。

 

     3.channelActive()方法表示所有Handler已经全部绑定到线程上,已经是一个完整的逻辑处理链时,会回调此方法。

 

     4.channelRead()方法表示当有数据可读时,也就是在我们客户端发来登陆请求数据时回调。

 

     5.channelReadComplete()方法表示一个完整的数据包读取完毕。

 

        接下来我们强制关停客户端,然后看一下服务端Handler剩余方法的调用顺序。

 

 

        6. channelInactive(): 表面这条连接已经被关闭了。

 

        7. channelUnregistered():连接关闭后,NIO也会收回线程对该连接的管理,那么这个Handler也就与该线程解除绑定。

 

        8. handlerRemoved():最后将所有逻辑处理器都移除完毕后回调该方法。

 

        从handlerAdded()方法回调,到handlerRemoved()方法回调,就是一个完整的ChannelHandler的生命周期。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Exception caught when during method invocation. request:net.risesoft.rpc.itemAdmin.DocumentManager.edit4Position(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String) requestId=1771270236171928205 java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.weibo.api.motan.rpc.DefaultProvider.invoke(DefaultProvider.java:64) at com.weibo.api.motan.rpc.AbstractProvider.call(AbstractProvider.java:52) at com.weibo.api.motan.transport.ProviderMessageRouter.call(ProviderMessageRouter.java:98) at com.weibo.api.motan.transport.ProviderProtectedMessageRouter.call(ProviderProtectedMessageRouter.java:75) at com.weibo.api.motan.transport.ProviderMessageRouter.handle(ProviderMessageRouter.java:93) at com.weibo.api.motan.transport.support.DefaultRpcHeartbeatFactory$HeartMessageHandleWrapper.handle(DefaultRpcHeartbeatFactory.java:98) at com.weibo.api.motan.transport.netty4.NettyChannelHandler.processRequest(NettyChannelHandler.java:155) at com.weibo.api.motan.transport.netty4.NettyChannelHandler.processMessage(NettyChannelHandler.java:133) at com.weibo.api.motan.transport.netty4.NettyChannelHandler.access$000(NettyChannelHandler.java:32) at com.weibo.api.motan.transport.netty4.NettyChannelHandler$1.run(NettyChannelHandler.java:73) at java.util.concurrent.ThreadPoolExecutor.runWorker(Threa是哪里的问题
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值