如何以优雅的方式通过id或Web应用程序(Java 2 EE)中所有当前活动的http会话获取任何http会话?
目前我有一个WebSessionListener和一次创建会话我把它放进去ConcurrentHashMap() (map.put(sessionId, sessionObj)),一切都好,我可以随时通过会话ID从该地图检索HTTP会话,但看起来HttpSession对象永远不会完成...甚至会话无效地图仍然参考无效的会话对象...我也读过这篇文章,看起来WeakHashMap在我的情况下是不可接受的......
换句话说,我需要有可能查看任何HttpSession甚至获取当前所有活动HttpSession并从那里检索一些属性...
请告诉别人:)
我需要访问HttpSession对象,因为以下原因:
有时用户会做一些可能影响另一个并发用户工作的操作/请求,例如管理员应该禁用用户帐户但该用户当前正在使用该系统,在这种情况下我需要向管理员显示一条消息,例如"用户XXX当前使用系统"因此我需要检查是否有任何持有用户XXX凭据的HttpSession已存在且处于活动状态.所以这就是我需要这样的可能性来获得任何http会话甚至所有会话.
我当前的实现是:SessionManager知道所有会话(ConcurrentMap)和HttpSessionListener,它们将会话/删除会话放入SessionManager.
我担心可能出现的内存问题,我想与某人讨论这个问题,但目前我清楚地看到一切都应该正常工作,因为当调用sessionDestroyed()方法时,所有无效的会话都将从地图中删除...
非常感谢您的重播,但现在我明白这个问题只是想象力:)
我正在尝试在Glassfish上运行java Web服务.有一些初始化代码可以设置一些变量并从Glassfish环境本身检索一些信息.我在@WebService类的静态初始化程序中有这个代码,但是这个代码看起来太早了,它在部署WebService端点后立即运行,而我需要在整个Web服务成功部署后运行它.
我尝试将代码移动到WebService类的构造函数中,然后该代码仅在我进入Tester Web页面并发送一些数据以运行Web方法时运行.
有没有办法在整个Web服务部署完成后立即设置一些初始化代码?