使用监听器统计在线会员,event.getSession().getId()抛出例外Session already invalidated

问题描述

我用监听器统计在线用人数和在线会员,结果出问题。publicfinalclassCouterListenerimplementsHttpSessionAttributeListener,HttpSessionListener,ServletContextListener{publicvoidattributeRemoved(HttpSessionBindingEventevent){Stringattributekey=event.getName();HttpSessionhs=(HttpSession)event.getSession();if(hs!=null){Stringsid=(String)hs.getId();if(attributekey.equalsIgnoreCase("userinfo")){deleteUser(sid);}}}}就在这个方法内出了问题,总是抛出例外:2009-02-0709:43:45:ERRORContainerBackgroundProcessor[StandardEngine[Catalina]]org.apache.catalina.core.ContainerBase.[Catalina].[127.0.0.1].[/]-Sessionattributeeventlistenerthrewexceptionjava.lang.IllegalStateException:getId:Sessionalreadyinvalidatedatorg.apache.catalina.session.StandardSession.getId(StandardSession.java:328)atorg.apache.catalina.session.StandardSessionFacade.getId(StandardSessionFacade.java:78)atcom.bl.filter.CouterListener.attributeRemoved(CouterListener.java:197)atorg.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1628)atorg.apache.catalina.session.StandardSession.expire(StandardSession.java:737)atorg.apache.catalina.session.StandardSession.isValid(StandardSession.java:577)atorg.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:678)atorg.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:663)atorg.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1283)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1568)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1557)atjava.lang.Thread.run(UnknownSource)我的系统采用jdk6.0,tomcat5.5,这个listener在我的本地机上使用没有问题,但是我传到我的空间商的服务器上,去总有这个问题。我真是没有折了。恳请高人指点!

解决方案

解决方案二:
session无效啊
解决方案三:
是啊,session无效,但是我不知道为什么会无效
解决方案四:
是啊,session无效,但是我不知道为什么会无效
解决方案五:
是啊,session无效,但是我不知道为什么会无效
解决方案六:
publicfinalclassCouterListenerimplementsHttpSessionAttributeListener,HttpSessionListener,ServletContextListener{privateSessionhs;publicvoidsessionCreated(HttpSessionEventse){this.hs=se.getSession();}publicvoidattributeRemoved(HttpSessionBindingEventevent){if(hs!=null){Stringsid=(String)hs.getId();if(attributekey.equalsIgnoreCase("userinfo")){deleteUser(sid);}}}}这样试试呢

时间: 2024-10-22 06:36:17

使用监听器统计在线会员,event.getSession().getId()抛出例外Session already invalidated的相关文章

使用 Redis 统计在线用户人数的例子

在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录. 本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线用户的数量进行统计, 但每个方案都有一些自己特有的操作, 并且各个方案的性能特征以及资源消耗也各有不同. ../../_images/online_users.png 方案 1 :使用有序集合 每当一个用户上线时, 我们就执行 ZADD 命令, 将这个用户以及它的在线时间添加到指定的有序集合中: Z

如何设置UCenter Home随便看看在线会员?

UCenter Home 是一套采用PHP+MYSQL构建的社会化网络软件(Social Network Software,简称SNS). 通过 UCenter Home,建站者可以轻松构建一个以好友关系为核心的交流网络,让站点用户可以用迷你博客一句话记录生活中的点点滴滴:方便快捷地发布日志.上传图片:更可以十分方便的与其好友们一起分享信息.讨论感兴趣的话题:轻松快捷的了解好友最新动态. UCenter Home 强调只提供用户愿意关注的信息,在信息噪音方面有着多级筛选控制.每一个人都可以将自己

8.26-8.28国美在线会员有福利

导读:国美在线会员快来抢福利啦!8月26日至28日,国美在线将启动为期3天的感恩有你 尽享钜惠会员回馈促销活动.从即日起,老会员登录国美在线就可以免费领取620元的优惠券,在8月26日活动开始后即可使用.目前,国... 国美在线会员快来抢福利啦!8月26日至28日,国美在线将启动为期3天的"感恩有你 尽享钜惠"会员回馈促销活动.从即日起,老会员登录国美在线就可以免费领取620元的优惠券,在8月26日活动开始后即可使用.目前,国美在线官网已经专门针对本次活动启动了专属促销界面,先期&qu

如何最准确地统计在线用户数?_编程10000问

' 设置好global.asa 文件,如下:<script LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart      Application("ActiveUsers") = 0      ' 设置计数初始值,可以根据自己的需要哦.End Sub Sub Session_OnStart      Session.Timeout = 20<?xml:names

国内在线旅游周边游市场三强出炉同程第一

近日,艾瑞咨询发布了2012年度中国在线旅游度假市场统计数据,提供了2012年度国内在线旅游度假市场的交易规模.市场份额分布等数据,并首次发布了关于在线旅游度假周边游市场的统计数据.根据艾瑞咨询数据,2012年国内在线旅游度假市场中周边游占26.6%,年增长率为93.6%,全年交易规模约为56.5亿元,同程.携程.驴妈妈分别以21.8%.9.5%.6.4%的份额位居这一细分市场的前三名.周边游一般被定义为,以地区核心城市周边为目的地,时间多在双休日,行程一般为1至3日,出游形式多为自助游或自驾游

getsession()-ServletActionContext和ActionContext获取session的区别

问题描述 ServletActionContext和ActionContext获取session的区别 各位大神们ServletActionContext.getRequest().getSession().setAttribute(key value); 和ActionContext.getContext().getSession().put(key value);有什么区别呢,越详细越好 解决方案 我们知道struts2接受客户端请求,在Action中进行处理后,将视图结果返回.struts

在线等...微软自带报表出问题

问题描述 如果数据很多就出现如图问题:如果数据少报表正常显示,为啥呀? 解决方案 解决方案二:很多多到什么程度,什么代码都没有,能看出来那才叫神了解决方案三:智商拙计,你这和让我看着电脑屏幕然后创造一个牛-逼的操作系统有什么区别?提问方式都没掌握.解决方案四:引用2楼u011384967的回复: 智商拙计,你这和让我看着电脑屏幕然后创造一个牛-逼的操作系统有什么区别?提问方式都没掌握. 你智商高....我发个只是想看看你们有没有遇到这样的情况代码有什么好看的我报表预览都是正常的代码看得有用吗解决

通过HttpSessionListener 实现 在线用户 .

要查看 在线 人数..   使用 application 进行 用户UserId 进行存储.   1.需要自己实现 一个 SessionListener.   根据自己需要配置. <session-config> <session-timeout>3</session-timeout> </session-config>     public interface HttpSessionListener extends EventListener { publ

统计风暴掀起于金融风暴之后

"统计风暴",掀起于金融风暴之后 金融危机以来,关于中国的经济统计数据更加受到国内各界乃至国际社会的重视.统计局公布的数据面临着前所未有的关注,而质疑之声也纷至沓来,让国家统计局上下面临巨大压力,甚至出现短期内四次出来针对各种质疑做出声明的罕见情形. 今年以来,统计局新任掌门人马建堂在不同公开场合的多次讲话中,几乎每次都把"统计数据质量"放在嘴边,如此高频率显然透露出统计局开始对数据造假动真格了.如果说以前统计局无可依仗,那么其近期配合纪检.人事部门一起推出的<