Netty调用service报错

在Netty处理器里面channelRead方法service查询数据库报错

io.netty.channel.DefaultChannelPipeline : 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.

解决方法:

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        super.exceptionCaught(ctx, cause);
        Channel channel = ctx.channel();
        //……
        if(channel.isActive())ctx.close();
    }
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/693758
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Netty 解决TCP粘包/半包使用
  • 除此之外, 这篇博客: Netty :Netty介绍 & 实现简易多人聊天室中的 ChannelHandler 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    ChannelHandler会处理I/O事件或拦截I/O操作,并将其转发到ChannelPipeline中的下一个ChannelHandlerChannelHandler本身并没有提供很多方法,通常需要实现其子类型之一:

    • ChannelInboundHandler:处理入站I/O事件的抽象。
    • ChannelOutboundHandler:处理出站I/O操作的抽象。

    为了方便,Netty提供了以下适配器类:

    • ChannelInboundHandlerAdapter:处理入站I/O事件的一种简单实现。
    • ChannelOutboundHandlerAdapter:处理出站I/O操作的一种简单实现。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^