Java Netty 4出站消息处理程序正在关闭连接

Java Netty 4出站消息处理程序正在关闭连接,java,handler,netty,outbound,Java,Handler,Netty,Outbound,我正在尝试Netty4中的自定义出站消息处理程序,但似乎无法使其正常工作。处理程序只记录一条语句,并添加到通道管道的底部。我的理解是,一旦发出写操作,这些处理程序将按顺序从下到上调用。自定义处理程序的想法是,它将在任何其他出站消息处理程序之前执行 不幸的是,当我将这个日志处理程序添加到管道中时,我看到了log语句,但是Netty似乎立即关闭了连接。这是我的通道初始值设定项和出站处理程序代码 HttpOutboundHandler.java public class HttpOutboundHan

我正在尝试Netty4中的自定义出站消息处理程序,但似乎无法使其正常工作。处理程序只记录一条语句,并添加到通道管道的底部。我的理解是,一旦发出写操作,这些处理程序将按顺序从下到上调用。自定义处理程序的想法是,它将在任何其他出站消息处理程序之前执行

不幸的是,当我将这个日志处理程序添加到管道中时,我看到了log语句,但是Netty似乎立即关闭了连接。这是我的通道初始值设定项和出站处理程序代码

HttpOutboundHandler.java

public class HttpOutboundHandler extends ChannelOutboundMessageHandlerAdapter<DefaultFullHttpResponse> {
    private static final Logger logger = LoggerFactory.getLogger(HttpOutboundHandler.class);

    @Override
    public void flush(ChannelHandlerContext context, DefaultFullHttpResponse response)
            throws Exception {
        logger.debug("Executing outbound handler.");
    }
}
最后,这里是记录器输出

[DEBUG] (Slf4JLogger:71) - [id: 0xbddf00cf, /0:0:0:0:0:0:0:1:57402 => /0:0:0:0:0:0:0:1:8080] ACTIVE
[DEBUG] (HttpOutboundHandler:19) - Executing outbound handler.
[DEBUG] (Slf4JLogger:71) - [id: 0x942993c1, /0:0:0:0:0:0:0:1:57403 :> /0:0:0:0:0:0:0:1:8080] INACTIVE

回答我自己的问题以防其他人发现

事实证明,我需要将消息添加到下一个出站消息缓冲区(我认为这会将消息传递给链中的下一个处理程序)。我还需要保留信息。更新后的代码现在看起来像

公共类HttpOutboundHandler扩展ChannelOutboundMessageHandlerAdapter{
私有静态最终记录器Logger=LoggerFactory.getLogger(HttpOutboundHandler.class);
@凌驾
公共无效刷新(ChannelHandlerContext上下文,DefaultFullHttpResponse响应)
抛出异常{
debug(“执行出站处理程序”);
ChannelHandlerUtil.addToNextOutboundBuffer(上下文,response.retain());
}
}
[DEBUG] (Slf4JLogger:71) - [id: 0xbddf00cf, /0:0:0:0:0:0:0:1:57402 => /0:0:0:0:0:0:0:1:8080] ACTIVE
[DEBUG] (HttpOutboundHandler:19) - Executing outbound handler.
[DEBUG] (Slf4JLogger:71) - [id: 0x942993c1, /0:0:0:0:0:0:0:1:57403 :> /0:0:0:0:0:0:0:1:8080] INACTIVE