1. @Override
    2. protected void doOpen() throws Throwable {
    3. NettyHelper.setNettyLoggerFactory();
    4. ExecutorService boss = Executors.newCachedThreadPool(new NamedThreadFactory("NettyServerBoss", true));
    5. ExecutorService worker = Executors.newCachedThreadPool(new NamedThreadFactory("NettyServerWorker", true));
    6. ChannelFactory channelFactory = new NioServerSocketChannelFactory(boss, worker, getUrl().getPositiveParameter(Constants.IO_THREADS_KEY, Constants.DEFAULT_IO_THREADS));
    7. bootstrap = new ServerBootstrap(channelFactory);
    8. final NettyHandler nettyHandler = new NettyHandler(getUrl(), this);
    9. channels = nettyHandler.getChannels();
    10. // https://issues.jboss.org/browse/NETTY-365
    11. // https://issues.jboss.org/browse/NETTY-379
    12. // final Timer timer = new HashedWheelTimer(new NamedThreadFactory("NettyIdleTimer", true));
    13. bootstrap.setOption("child.tcpNoDelay", true);
    14. bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
    15. @Override
    16. public ChannelPipeline getPipeline() {
    17. NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), NettyServer.this);
    18. ChannelPipeline pipeline = Channels.pipeline();
    19. /*int idleTimeout = getIdleTimeout();
    20. if (idleTimeout > 10000) {
    21. pipeline.addLast("timer", new IdleStateHandler(timer, idleTimeout / 1000, 0, 0));
    22. }*/
    23. pipeline.addLast("decoder", adapter.getDecoder());
    24. pipeline.addLast("encoder", adapter.getEncoder());
    25. pipeline.addLast("handler", nettyHandler);
    26. return pipeline;
    27. }
    28. });
    29. // bind
    30. channel = bootstrap.bind(getBindAddress());
    31. }