Netty 4:不同管道中的共享处理程序

Netty 4:不同管道中的共享处理程序,netty,Netty,为每个新连接调用ChannelInitializer.initChannel方法 pipeline.addLast(new HttpServerCodec()); pipeline.addLast(new HttpObjectAggregator(65536)); pipeline.addLast(new ServerWebSocketServerProtocolHandler("/api", "*", false)); 我可以对所有连接重复使用同一实例吗?如何判断特定的处理程序是否可以跨多个

为每个新连接调用
ChannelInitializer.initChannel
方法

pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new HttpObjectAggregator(65536));
pipeline.addLast(new ServerWebSocketServerProtocolHandler("/api", "*", false));

我可以对所有连接重复使用同一实例吗?如何判断特定的处理程序是否可以跨多个连接重用?

可以重用的处理程序用
@Sharable
注释,这意味着保证是无状态的

请继续检查不同处理程序的文档

例如,
HttpServerCodec
HttpObjectAggregator
是可共享的

最后一个处理程序可能是您实现的自定义处理程序,至少我不熟悉它。这取决于您的实现


否则,您可以通过创建前两个处理程序的静态实例来重用它们,并为每个连接仅重新创建最后一个处理程序。

您确定
HttpServerCodec
HttpObjectAggregatorare
是可共享的吗?我检查了它们的源代码,它们没有用“@Sharable”注释对不起,你完全正确。它们不可共享,因为它们自己不使用注释。文档的继承摘要误导了我,这只意味着类知道注释。因此,上面提到的处理程序中没有一个是可共享的,因为它们都是状态满的。