您的位置:首页 > 产品设计 > UI/UE

为什么Mina服务端 心跳过滤器 的 isRequest 执行了2次

2016-06-21 22:36 531 查看
经过夜战,察看mina框架的源码,可以得知keepalivefilter,贴出源码,太多字数超过限制,简要说一下

if (messageFactory.isRequest(session, message)) {

                Object pongMessage =

                    messageFactory.getResponse(session, message);

        if (messageFactory.isResponse(session, message)) {    

                resetStatus(session);

            }

        } finally {

            if (!isKeepAliveMessage(session, message)) {

                nextFilter.messageReceived(session, message);

            }

        }

 private boolean isKeepAliveMessage{

        return messageFactory.isRequest(session, message) ||

        messageFactory.isResponse(session, message);

    }

可以看出,首先调用了isrequest,如果你返回true,就会进入if里面,执行getresponse,然后调用isresponse,最后finally调用iskeepalive,这个函数里面又调用了isrequest,可以通过断点调试。查看堆栈队列得知。

所以你isrequest调用了两次。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: