我有一個ServerBootstrap配置了一個相當標準的Http Codec ChannelInitializer。修改Netty ServerBootstrap ChannelInitializer
在關機我的服務器等待一個寬限期,它仍然可以處理傳入的請求。我的服務器支持保持活動狀態,但是在關閉時,我想確保每個發送的HttpResponse都關閉與HTTP頭「Connection:close」的連接,並且在寫入後關閉通道。這隻在服務器關閉時需要。
我有一個的ChannelHandler來支持:
@ChannelHandler.Sharable
public class CloseConnectionHandler extends ChannelOutboundHandlerAdapter {
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
HttpResponse response = (HttpResponse) msg;
if (isKeepAlive(response)) {
setKeepAlive(response, false);
promise.addListener(ChannelFutureListener.CLOSE);
}
ctx.write(msg, promise);
}
我一直使用通道組的所有連接的客戶端的軌道,這樣我就可以動態修改每個客戶端的管道在關機時的點,包括我CloseConnectionHandler ,這工作沒有問題。
然而,在寬限期內新的連接有自己的管道配置由原始ServerBootstrap ChannelInitializer提供,並且我看不到的動態重新配置,一個方法是什麼?
作爲一種變通我可以在標準配置的管道和一個布爾關閉,只有激活它關閉CloseConnectionHandler。但我寧願避免,如果可能的話,似乎有點不必要。
塔諾曼。 Netty會因此而受益嗎?如果合適的話,我很樂意處理它。 –