本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
zysnba - xiangjie88
- sgqt
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wallimn
- wy_19921005
- vipbooks
- benladeng5225
- 龙儿筝
- javashop
- fantaxy025025
- ranbuijj
- zw7534313
- qepwqnp
- e_e
- 解宜然
- zysnba
- ssydxa219
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- kaizi1992
- xpenxpen
- gaojingsong
- jh108020
- wiseboyloves
- xiangjie88
- ganxueyun
- xyuma
- wangchen.ily
- jbosscn
- lemonhandsome
- zxq_2017
- mengjichen
- luxurioust
- lzyfn123
- forestqqqq
- nychen2000
- Xeden
- zhanjia
- wjianwei666
- ajinn
- hanbaohong
- 喧嚣求静
- jickcai
- kingwell.leng
- mwhgJava
- silverend
- daizj
- lich0079
最新文章列表
关于netty框架使用的出现的问题
1.framedecode的时候报indexofboundexception
使用FrameDecoder解码的时候报IndexOutOfBoundsException错误。找了好几天 才发现 原来是 netty使用FrameDecoder解码并没有把 一个协议包的内容读完,就调用了后面的业务逻辑代码,造成业务逻辑在解析 包的内容时长度不够,报错.
解决方法:
获得该包的长度之后再分析 如果不够则r ...
Netty ChannelFactory
最近在用Netty帮助业务开发封装一个通讯组件的时候,关于ChannelFactory发现了一些问题,暂时纪录如下:
1 - 内存泄漏问题
梁飞的博客中提到了Netty的ChannelFactory在不断的销毁和创建过程中,会出现内存泄漏的问题,从而在dubbo中采用静态化的方式来规避这个问题(原文:http://javatar.iteye.com/blog/1138527)。但是我的开 ...
Netty对象传输
转自:http://www.xiaoyaochong.net/wordpress/?p=363
我们知道,Netty使用二进制协议传输对象,那怎么通过Netty进行POJO对象传输呢?我们需要提供一种至支持对象传输的协议,这种协议依然是使用ChannelBuffer作为载体。我们要使用ChannelHandler作为编码和反编码的切入。
假设我们现在只需要读取32位整数,虽然这并不是使 ...
Netty概念之ChannelEvent
ChannelEvent
一个i/o事件关联一个Channel,ChannelEvent在ChannelPipeline中被一系列的ChannelHandler处理。
每个事件要么是upstream event(上游事件),要么是downstream event(下游事件),如果一个事件从管道中的第一个处理器游向最后一个处理器,我们叫它上游事件;如果一个事件从管道中的最后一个事件游向第一 ...
netty源码分析之ReplayingDecoder
在看了FrameDecoder后,我们接下来再看ReplayingDecoder,我们首先分析下为什么我们已经有了功能非常强大的FrameDecoder了,还行ReplayingDecoder呢,就从下面的例子看起。
假设消息结构是这样的:
VERSION - 1 byte
TYPE - 1 ...
netty源码分析之FrameDecoder(LengthFieldBasedFrameDecoder)
我们接下来看一个也是比较重要的的解码器LengthFieldBasedFrameDecoder,这个和DelimiterBasedFrameDecoder比起来没有那么难理解,所以我们简单的看一下。
和之前一样,我们先来看一下局部变量。
private final int maxFrameLength;
private final int ...
netty源码分析之FrameDecoder(DelimiterBasedFrameDecoder)
前面我们分析了FrameDecoder的实现,我们接下来看看它的子类实现吧!
我们首先来看DelimiterBasedFrameDecoder的实现,个人认为这个类实现的真的很牛,有些变量的含义作者没有增加注释,有时候可能不容易猜到意图。首先我们来看一下这个类的成员变量:
private final ChannelBuffer[] delimi ...
netty源码分析之FrameDecoder
我们接下来就看和业务息息相关的解码器,首先我们来看FrameDecoder,这个东西应该是所有的解码器都会实现这个,所以我们来重点看一下。
FrameDecoder产生的根源就是TCP/IP数据包的传输方式决定的,包在传输的过程中会分片和重组,
正如javadoc里面所说的:
客户端在发送的时候的序列如下:
+-----+-----+-----+ ...
netty源码分析之ChannelFuture
在netty里面所有的nio相关的操作都是异步的,返回一个channelfuture对象,这个里面可以添加一些listener,然后再相关操作完成后进行触发,最主要的是通过这个对象可以查询相关操作的执行情况,是成功了,还是失败了。
我们来就来看看DefaultChannelFuture的实现就好,我们应该能猜到netty的思想,里面有一个listener ...
netty源码分析之ChannelPipeline
看了ChannelHandler我们就来看ChannelPipeline,这个类实现了责任链模式,我们就直接来看这个类的实现吧,看完后我们再看看javadoc的,这个写的很详细。
static final InternalLogger logger = InternalLoggerFactory.getInstance(DefaultChannelPipe ...
netty源码分析之ChannelHandler
netty里面最重要的应该是ChannelHandler,这个里面也是用户编程直接打交道的接口,也是串行于ChannelPipeLine里面执行相应的业务逻辑。
从类结构来看,一个handler应该有一个ChannelHandlerContext,ChannelHandler是处在上层的一个标识接口,下面有两个接口分别来处理Upstream event和一个D ...
netty学习之ChannelEvent
netty里面ChannelEvent是非常重要的一个概念,在这个里面我们来重点分析一下。
ChannelEvent应该是netty里面比较重要的概念了,这个是在ChannelPipeline的ChannelHandlers里面传递的对象。event分为两种,一种是upstream event,另外一种是downstream ev ...
netty学习之ServerChannel
首先我们先来看serverchannel的类继承层次,然后再一个一个的研究。
现在我们来挨个的介绍各个类。
AbstractChannel应该是整个Channel子类的父类,这个里面有一个static的变量allChannels,这个里面放着所有的channel,现在还不能体会放这个得好处。里面感觉没有什么特殊的,allocateId这个方法应该是给channel分配一个id, ...