繁体   English   中英

Netty,如何通过所有处理程序存储数据

[英]Netty, how to store data through all handlers

我是Netty的新手,我对将客户端接收的数据存储在服务器中有疑问,以便以后由任何客户端咨询。

如果我将管道定义如下:

ch.pipeline().addLast(new ServerHandler());

我可以在ServerHandler中定义如下的类变量吗?

public class ServerHandler extends ChannelInboundHandlerAdapter {

private static final ArrayList<String> llamadas = new ArrayList<String>();
....

使用后,所有客户都这样吗?

synchronized(llamadas) {
            llamadas.add(mensaje);
}

我也想问一下是否仅创建一个ServerHandler实例是否有区别?

ch.pipeline().addLast(serverHandler);

我用@Sharable注解课程

对变量的访问有什么不同吗?

非常感谢!!

问候。

这不仅仅是Netty专有的,而是Java问题。 由于llamadas是静态类成员,因此无论是否使ChannelHandler @Sharable都需要进行同步,即是否具有多个通道处理程序实例或只有一个实例,您只需要附加一个ArrayList

通常, @Sharable与带有无状态wrt通道的处理程序@Sharable使用,即不维护任何特定于通道的状态,因此您可以跨管道使用单个处理程序实例。 有关详细说明,请参见本教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM