如何从java中的所有活动会话中清除会话属性?

时间:2009-06-26 03:33:06

标签: java jsp servlets java-ee session-variables

目前我正在开发使用JSP / Servlet和struts框架的web项目。我们正在使用缓存机制。我想从特定事件的所有活动会话中清除一些会话属性(例如,在刷新缓存的情况下)。那么实现相同的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

让我猜一下......你将缓存中的值存储到会话变量中,对吗?

最简单的方法是每次需要时从缓存中检索值,让缓存管理到期/重新加载等。这是缓存的责任。

换句话说,不要将缓存中的值存储到会话对象中。当您使用缓存时,它将没有用处。

干杯

答案 1 :(得分:1)

您需要提供一个实现HttpSessionActivationListener(服务器api的一部分)接口的类,并将其注册到web.xml中。

然后,您可以跟踪活动会话并使用该信息来访问会话并执行属性更新。实际上,实现类将是一个单例,因此您必须在会话跟踪期间仔细处理同步问题。

当然,如果您的群集环境中有多个节点,则属性更改的传播可能非常复杂。