netty自定义url过滤器抛引用异常

在Netty服务器中,为避免业务代码与URL判断耦合,创建了一个新的Handler来过滤无效请求,如/favcion.ico。然而,这引发了非法引用异常。异常出现在经过自定义的二次解码器和业务Handler后,请求对象在finally块中被释放两次,导致异常。解决方案是过滤URL的Handler不继承SimpleChannelInboundHandler,而是继承ChannelHandlerAdaptor,以防止二次释放请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述
使用netty构造服务端,使用浏览器在地址栏输入访问地址时,除了会发送目标url之外,浏览器还会额外发送一个url–>/favicon.ico,以前是在一个业务处理的hanlder中使用if判断uri,如果uri是这个的话,就不去执行业务逻辑,但是这样的话会造成业务代码与判断逻辑的耦合。所以使用一个新的handler去处理,利用netty的执行连完成后序的业务。
handler的构造执行顺序如下
HttpRequestDecoder(netty自带)–>FilterurlHandler–>HttpNettyRequestDecoder(二次解码器,自定义)–>serviceHandler(业务handler)–>HttpNettyResponseEncoder(二次编码器,自定义)–>HttpResponseEncoder(netty自带)
其中filterurlhandler,serviceHandler继承SimpleChannelInboundHandler

这里写图片描述

这里写图片描述
但是当浏览器访问的时候,比如url【/queryapi?index=1】,浏览器可以收到netty服务端返回

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值