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());
すべてのハンドラーは、「新規」のパイプラインによって作成されますか?そして、Nettyのすべての例はステートフルですか?明らかに、Echo/Telnetはステートフルな小道具を保持する必要はありません。
以前のプロジェクトでは、Nettyを使用してRESTfulサーバーとして機能するHttpサーバーを作成しました。ハンドラーコードは次のとおりです。
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
意味の1つです)ので、シングルトンハンドルを使用しました。私は正しかったですか?