Java 有状态xxxServerHandle和无状态yyyServerhandle之间的区别?

Java 有状态xxxServerHandle和无状态yyyServerhandle之间的区别?,java,netty,stateful,Java,Netty,Stateful,我查看了Netty文档,在示例源类org.jboss.Netty.example.factorial.FactorialServerHandler中发现了一些注释,在这个src中,一些注释: //##in org.jboss.netty.example.factorial.FactorialServerPipelineFactory ...... // and then business logic. // Please note we create a hand

我查看了Netty文档,在示例源类org.jboss.Netty.example.factorial.FactorialServerHandler中发现了一些注释,在这个src中,一些注释:

    //##in org.jboss.netty.example.factorial.FactorialServerPipelineFactory
    ......
    // and then business logic.
    // Please note we create a handler for every new channel
    // because it has stateful properties.
    pipeline.addLast("handler", new FactorialServerHandler());
但是,我再次检查了其他示例,例如TelnetServerPipelineFactory,似乎没有什么不同,句柄是由以下内容创建的:

    // and then business logic. 
    pipeline.addLast("handler", new TelnetServerHandler());
所有处理程序都是通过管道创建的,并带有“new”?Netty中所有的例子都是有状态的?显然,Echo/Telnet不需要保留状态属性

在我以前的项目中,我使用Netty创建一个Http服务器作为RESTful服务器,我的处理程序代码是:

    public class HttpServerPipelineFactory  implements ChannelPipelineFactory {
        private final HttpServerHandler handler;
        public ChannelPipeline getPipeline() throws Exception {
            ChannelPipeline pipeline = pipeline();
            pipeline.addLast("decoder", new HttpRequestDecoder());
            pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
            pipeline.addLast("encoder", new HttpResponseEncoder());
            pipeline.addLast("handler", handler); //singleton
            return pipeline;
        }
    }

我的RESTful服务器是无状态的(这是
REST
的意思之一),所以我使用单例句柄。我说得对吗

当文档显示“stateful”时,意味着状态信息作为字段存储在ChannelHandler中,因此不可能在不同通道之间共享ChannelHandler。如果没有存储为字段的状态信息,则可以将其用作Singleton。

当文档中显示“有状态”时,表示状态信息存储为ChannelHandler中的字段,因此不可能在不同通道之间共享ChannelHandler。如果没有存储为字段的状态信息,则可以将其用作Singleton。

如果新处理程序是无状态的,则没有理由实例化它们。但在Http示例中,这些处理程序是有状态的。它们从网络接收帧到帧,并将它们解析为头等等。然后,如果请求是分块的,则聚合器将分块合并到单个负载中,等等。简而言之,除非您正在构建echo服务器,否则较低级别的处理程序可能必须是有状态的,但较高级别的处理程序不必是有状态的。

如果新处理程序是无状态的,您没有理由实例化它们。但在Http示例中,这些处理程序是有状态的。它们从网络接收帧到帧,并将它们解析为头等等。然后,若请求是分块的,则聚合器将分块组合到单个有效负载中,等等。简而言之,除非您正在构建echo服务器,否则较低级别的处理程序可能必须是有状态的,但较高级别的处理程序不必是有状态的