mina里面session回收怎么做啊?

J2EE 码拜 10年前 (2015-05-10) 1522次浏览 0个评论
 

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

看网上说ExpiringSessionRecycler可以回收session  这个东西怎么用的????

5分
话说不会,友情帮顶,期待高手解答!
5分
不知道你说的不准确是怎么一回事
至少我没碰到过客户端断开,MINA的事件没响应的情况
引用 2 楼  的回复:

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

不准确是指我写的那个计数器数值不对  session开始和结束不能一一对应
这个情况2000连接时候还没有 3000的话就会有几十个没有走sessionClosed()

看log的话这些有问题的没有 messageReceived到客户上来的内容

5分
sessionIdle里面有做close 操作吗?
有的话  会不会是 IDLE数 +sessionClosed的数字 = sessionOpened
引用 4 楼  的回复:

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

sessionIdle里有close操作

”有的话  IDLE数 +sessionClosed的数字 = sessionOpened“

请教这句何解呢 IDLE数不应该包含在sessionClosed的数里么?

另外补充一句 
从我打出来的LOG分析 有这么个现象当一次 messageSent之后 客户端继续连过来的时候服务器这边没有显示messageReceived被调用 也没给客户端反任何消息, 就算超过IDLE时间了也没走sessionIdle  不知道在干什么呢

或者说 我怎么才能知道当前有哪些session正在运行 
有个sessionMap? 怎么用?
10分
 SocketAcceptor acceptor = new NioSocketAcceptor();

acceptor 这个是你MINA的对象,则:
int aliveSession = acceptor.getManagedSessionCount();、

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

5分
引用 5 楼  的回复:

引用 4 楼  的回复:

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

sessionIdle里有close操作

”有的话  IDLE数 +sessionClosed的数字 = sessionOpened“

请教这句何解呢 IDLE数不应该包含在sessionC……

你这个还是多调试吧。

5分
我记得老师说过,这个session会自动回收的。
5分
还是没看明白要问什么?
我也遇见这个问题了,请问楼主如何处理的。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mina里面session回收怎么做啊?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!