`
sqgme
  • 浏览: 23185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

netty-3.2.4.Final IDLE时无法发送链路检测报文的BUG

阅读更多
刚刚从mina中转向netty,链路检测报文怎么配都不好使,google之,终于在jboss的官网上发现已经报告此bug,并在netty4.0修复,给提供了patch包,修复patch之后,重新打包,发现还是没有解决。查看源码之后发现netty将超时的时间从options中设置。于是将超时时间重新设置:

                ClientBootstrap bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory(
                        Executors.newCachedThreadPool(),
                        Executors.newCachedThreadPool())
                );
                ChannelPipelineFactory pipelineFactory = new MyPipelineFactory(clientSessionHandler ,decoder,encoder);
                bootstrap.setPipelineFactory( pipelineFactory );
                bootstrap.setOption("allIdleTime","5"); //这里,很重要 

public class ClientIdleHandler extends IdleStateAwareChannelHandler {
    final Logger logger = LoggerFactory.getLogger(ClientIdleHandler.class);
    @Override
    public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception {
    	 if( e.getState() == IdleState.ALL_IDLE){
            logger.debug("链路空闲!发送心跳!S:{} - C:{} idleState:{}", new Object[]{ctx.getChannel().getRemoteAddress(), ctx.getChannel().getLocalAddress() , e.getState()});
            e.getChannel().write(MessageHelper.buildMessageEcho());
            super.channelIdle(ctx, e);    
         }


    }

}




public class MyPipelineFactory implements ChannelPipelineFactory{

    private ETMessageDecoder decoder;
    private ETMessageEncoder encoder;

    private ChannelHandler  clientHandler;

    public  MyPipelineFactory(ChannelHandler clientHandler,ETMessageDecoder decoder,ETMessageEncoder encoder){
        this.clientHandler = clientHandler;
        this.decoder = decoder;
        this.encoder = encoder;

    }


    @Override
    public ChannelPipeline getPipeline() throws Exception {
        ChannelPipeline pipeline = Channels.pipeline();
        Timer timer = new HashedWheelTimer();
        pipeline.addLast("encoder",encoder);
        pipeline.addLast("decoder" , decoder);
        pipeline.addLast("handler" , clientHandler);
        pipeline.addLast("timeout", new IdleStateHandler(timer, 0, 0, 10));
        pipeline.addLast("idleHandler", new ClientIdleHandler());

            return pipeline;
    }
}


重新启动,解决。
  • patch.rar (3 KB)
  • 描述: netty3.2.4patch
  • 下载次数: 87
分享到:
评论
2 楼 冲杯茶喝 2012-08-28  
明显是自己没理解pipeline的机制,bootstrap.setOption("allIdleTime","5"); //这里,很重要   这个参数没必要设置,但是你一定要记住,pipeline.addLast("handler" , clientHandler);  这个handler里面一定要把状态时间往上抛。
1 楼 banchun 2011-07-04  
你说的这个版本的bug,我没用那个补丁包的情况下,心跳包为什么不起作用呢?求楼主解释一下啊

相关推荐

    Netty (netty-3.2.5.Final.jar,netty-3.2.5.Final-sources.jar)

    这个压缩包包含 `netty-3.2.5.Final.jar` 和 `netty-3.2.5.Final-sources.jar` 两个文件,它们分别代表了Netty框架的运行时库和源代码。 `netty-3.2.5.Final.jar` 是Netty的可执行JAR文件,包含了所有必要的类和...

    netty-3.7.0.Final-API文档-中文版.zip

    赠送jar包:netty-3.7.0.Final.jar; 赠送原API文档:netty-3.7.0.Final-javadoc.jar; 赠送源代码:netty-3.7.0.Final-sources.jar; 赠送Maven依赖信息文件:netty-3.7.0.Final.pom; 包含翻译后的API文档:netty-...

    netty-3.10.5.Final-API文档-中文版.zip

    赠送jar包:netty-3.10.5.Final.jar; 赠送原API文档:netty-3.10.5.Final-javadoc.jar; 赠送源代码:netty-3.10.5.Final-sources.jar; 赠送Maven依赖信息文件:netty-3.10.5.Final.pom; 包含翻译后的API文档:...

    netty-netty-3.10.6.Final.tar.gz

    Netty (netty-netty-3.10.6.Final.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...

    netty-4.1.17.Final.jar

    这个"Netty-4.1.17.Final.jar"是Netty框架的一个发行版本,它适用于Java 8及以上版本,这意味着它可以充分利用Java 8的新特性,如lambda表达式和流API,来提升性能和代码可读性。 Netty的核心设计理念是基于通道...

    netty-all-4.1.32.Final-sources.jar 最新版netty源码全部包

    netty-buffer-4.1.32.Final-sources.jar netty-buffer-4.1.32.Final.jar netty-build-22-sources.jar netty-build-22.jar netty-codec-4.1.32.Final-sources.jar netty-codec-4.1.32.Final.jar netty-codec-...

    netty-all-4.1.23.Final-API文档-中英对照版.zip

    赠送jar包:netty-all-4.1.23.Final.jar; 赠送原API文档:netty-all-4.1.23.Final-javadoc.jar; 赠送源代码:netty-all-4.1.23.Final-sources.jar; 赠送Maven依赖信息文件:netty-all-4.1.23.Final.pom; 包含...

    netty-netty-4.1.36.Final.rar

    netty源码netty-netty-4.1.36.Final.rarnetty源码netty-netty-4.1.36.Final.rarnetty源码netty-netty-4.1.36.Final.rarnetty源码netty-netty-4.1.36.Final.rarnetty源码netty-netty-4.1.36.Final.rarnetty源码netty-...

    netty-3.2.7.final JAR包

    netty-3.2.7.final JAR包,netty-3.2.7.final JAR包,netty-3.2.7.final JAR包

    netty-common-4.1.65.Final-API文档-中英对照版.zip

    赠送jar包:netty-common-4.1.65.Final.jar; 赠送原API文档:netty-common-4.1.65.Final-javadoc.jar; 赠送源代码:netty-common-4.1.65.Final-sources.jar; 赠送Maven依赖信息文件:netty-common-4.1.65.Final....

    netty-buffer-4.1.68.Final-API文档-中文版.zip

    赠送jar包:netty-buffer-4.1.68.Final.jar; 赠送原API文档:netty-buffer-4.1.68.Final-javadoc.jar; 赠送源代码:netty-buffer-4.1.68.Final-sources.jar; 赠送Maven依赖信息文件:netty-buffer-4.1.68.Final....

    netty-all-4.1.68.Final-API文档-中英对照版.zip

    赠送jar包:netty-all-4.1.68.Final.jar; 赠送原API文档:netty-all-4.1.68.Final-javadoc.jar; 赠送源代码:netty-all-4.1.68.Final-sources.jar; 赠送Maven依赖信息文件:netty-all-4.1.68.Final.pom; 包含...

    netty-3.8.0.Final.jar

    netty-3.8.0.Final.jar netty-3.8.0.Final.jar netty-3.8.0.Final.jar

    netty-netty-4.1.69.Final.tar.gz

    这个“netty-netty-4.1.69.Final.tar.gz”文件是Netty的最新稳定版本,版本号为4.1.69.Final,它是一个压缩包文件,通常包含源码、编译后的类库、文档和其他相关资源。 Netty的核心特点包括: 1. **异步事件驱动**...

    netty-all-4.1.29.Final-API文档-中文版.zip

    赠送jar包:netty-all-4.1.29.Final.jar; 赠送原API文档:netty-all-4.1.29.Final-javadoc.jar; 赠送源代码:netty-all-4.1.29.Final-sources.jar; 赠送Maven依赖信息文件:netty-all-4.1.29.Final.pom; 包含...

    netty-3.7.0.Final.jar

    netty-3.7.0.Final.jarnetty-3.7.0.Final.jarnetty-3.7.0.Final.jarnetty-3.7.0.Final.jarnetty-3.7.0.Final.jar

Global site tag (gtag.js) - Google Analytics