An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means

原创 2016年08月31日 16:06:57

问题描述:

警告: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
    at sun.nio.ch.SocketDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(Unknown Source)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
    at sun.nio.ch.IOUtil.read(Unknown Source)
    at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
    at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:446)
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:871)
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:208)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:485)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:452)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:346)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:794)
    at java.lang.Thread.run(Unknown Source)

我这里问题发生原因是服务端未给客户端回应消息前客户端提前关闭连接造成。

解决方案:

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        super.exceptionCaught(ctx, cause);
        Channel channel = ctx.channel();
        //……
        if(channel.isActive())ctx.close();
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

java netty之DefaultChannelPipeline

前面分析过ChannelPipeline的定义,以及它的集成体系,这篇文章深入一些,分写一个它的实现类DefaultChannelPipeline,它直接实现了ChannelPipeline接口。。。...

Netty4.0学习笔记系列之六:多种通讯协议支持

上文介绍了如何应用Netty开发自定义通讯协议,本文在此基础上进一步深化,研究如何同时支持不同的通讯协议。 此处所谓的通讯协议,指的是把Netty通讯管道中的二进制流转换为对象、把对象转换成二进制流的...

netty4.0.x源码分析—ChannelPipeline

备注:本文的分析基于netty 4.0.9final版本 1、ChannelPipeline结构图 2、关键类和接口分析 上一篇关于Channel的文章,在AbstractChannel的介绍中,...

Netty 4源码解析:请求处理

Netty 4源码解析:请求处理通过之前《Netty 4源码解析:服务端启动》的分析,我们知道在最前端“扛压力”的是NioEventLoop.run()方法。我们指定创建出的NioServerSock...
  • dc_726
  • dc_726
  • 2015年08月29日 08:14
  • 6043

Netty Exceptioncaught方法

因于Netty的I/O异常或一个处理器实现的内部异常。多数情况下,捕捉到的异常应当被记录下来,并在这个方法中关闭这个channel通道。当然处理这种异常情况的方法实现可能因你的实际需求而有所不同,例如...

HEAP: Free Heap block XXXX modified at XXXX after it was freed

开发过程中,有时候会遇到堆异常的情况 HEAP: Free Heap block 39b998 modified at 39b9c0 after it was freed ...
  • xkxjy
  • xkxjy
  • 2011年02月28日 12:46
  • 1635

自己动手解决HEAP: Free Heap block XXX modified at YYY after it was freed问题

前段时间接手的项目中有出现HEAP: Free Heap block XXX modified at YYY after it was freed问题,作为C/C++程序员,如果代码写得不规范,出现这...
  • witton
  • witton
  • 2013年05月10日 16:56
  • 2346

今天又搞到个libDTL.so is not an ELF file - it has the wrong magic bytes at the start.

最初编译生成的libDTL.a是拷贝到/usr/lib并设置软连接 xia@ubuntu:~/dtl37/lib$ ln -s libDTL.a libDTL.so       实际上在这硬链接也行...

If I have been able to see further, it was only because I stood on the shoulders of giants.

Quite elegant languages: to learn, to write an essay . As love... 我不知道在别人看来,我是什么样的人;但在我自己看来,我...

《How hard can it be? Estimating the difficulty of visual search in an image》和 PPT

《How hard can it be? Estimating the difficulty of visual search in an image》发表于2016年CVPR上,这篇文章是老师推荐的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means
举报原因:
原因补充:

(最多只允许输入30个字)