我们正在使用 HttpPostRequestDecoder 来读取传入的请求并发送数据,但是在释放数据和破坏解码器时会出现各种错误,所以我想知道是否有关于如何使用解码器的指南,或者理想的生命周期是什么?
我们的案例:
在一个子类中,我们通过调用
ChannelInboundHandlerAdapter
创建解码器void channelRead(ChannelHandlerContext ctx, Object msg)
decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), request)
通过调用读取数据,读取数据后
decoder.getBodyHttpData(name)
立即释放(用于字符串和文件上传)void channelInactive(ChannelHandlerContext ctx)
通过调用销毁解码器decoder.destroy()
这似乎在 4.1.59 中以某种方式工作,但在更新到 netty 4.1.60 时会带来泄漏或 io.netty.util.IllegalReferenceCountException。
现在我想知道这是错误的使用还是可能是一个错误,因为解码器生命周期总是在我们的代码中造成麻烦。
谢谢你的任何提示。