web应用中session的寿命问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 19:44:23
我用struts写了个论坛,有一个功能是已经在线的用户再登录时会提示用户已登陆。userBean保存在session中,userSet保存在servlet中来判断是否在线。
但是发现当用户未主动登出而是直接关闭浏览器时,session仍未结束,用户仍然在线。
书上说session在客户关闭浏览器时就结束了,但是我用HttpSessionListener监听,当关闭浏览器的时候,sessionDestroyed()方法并没有被执行。

请问是为什么?应该怎么使用户关闭浏览器时自动登出?
只能设置session失效时间吗?默认的就是30分钟。
我想要的效果是不关闭浏览器就不会断直到失效时间,而一旦关闭浏览器就退出了。

在web.xml中设置session失效时间,一般为30分钟就可以。
这样用户直接关闭浏览器,30分钟后session会失效,sessionDestroyed()方法将被执行。

<session-config>
<session-timeout>30</session-timeout>
</session-config>

配置文件设的,有:
<cache-policy-conf>
<min-capacity>50</min-capacity>
<max-capacity>1000000</max-capacity>
<overager-period>300</overager-period>
<max-bean-age>600</max-bean-age>
<resizer-period>400</resizer-period>
<max-cache-miss-period>60</max-cache-miss-period>
<min-cache-miss-period>1</min-cache-miss-period>
<cache-load-factor>0.75</cache-load-factor>
</cache-policy-conf>Top

关于有状态会话BEAN的生命周期很特别,描述如下:
1:不存在状态---(client调用create())(容器调用Class.newInstance(),setSessionContext (),ejbC