我在sessionOpened和sessionClosed里做了个加减值来统计个数,
sessionIdle()里设置了时间 ,单独的断开 超时等操作都可以看到效果
但是如果连接数一大就会出现不准确的 不知道是否正确关闭
看网上说ExpiringSessionRecycler可以回收session  这个东西怎么用的????

解决方案 »

  1.   

    不知道你说的不准确是怎么一回事
    至少我没碰到过客户端断开,MINA的事件没响应的情况
      

  2.   

    不准确是指我写的那个计数器数值不对  session开始和结束不能一一对应
    这个情况2000连接时候还没有 3000的话就会有几十个没有走sessionClosed()看log的话这些有问题的没有 messageReceived到客户上来的内容
      

  3.   

    sessionIdle里面有做close 操作吗?
    有的话  会不会是 IDLE数 +sessionClosed的数字 = sessionOpened
      

  4.   


    sessionIdle里有close操作”有的话  IDLE数 +sessionClosed的数字 = sessionOpened“请教这句何解呢 IDLE数不应该包含在sessionClosed的数里么?另外补充一句 
    从我打出来的LOG分析 有这么个现象当一次 messageSent之后 客户端继续连过来的时候服务器这边没有显示messageReceived被调用 也没给客户端反任何消息, 就算超过IDLE时间了也没走sessionIdle  不知道在干什么呢
      

  5.   

    或者说 我怎么才能知道当前有哪些session正在运行 
    有个sessionMap? 怎么用?
      

  6.   

     SocketAcceptor acceptor = new NioSocketAcceptor();acceptor 这个是你MINA的对象,则:
    int aliveSession = acceptor.getManagedSessionCount();、你说的sessionMap是这个?
    Map<Long,IoSession> sessionMap = acceptor.getManagedSessions();
    用处不大,这个都是通信层的缓存对象,肯定是用SessionId作为Key放在map中,非业务层,你应该不需要关心。最多知道个总数就行。
      

  7.   

    我记得老师说过,这个session会自动回收的。