【发布时间】:2009-06-26 03:33:06
【问题描述】:
目前我正在开发使用 JSP/Servlet 和 struts 框架的 web 项目。我们正在使用缓存机制。我想从特定事件的所有活动会话中清除一些会话属性(例如,在刷新缓存的情况下)。那么实现相同的最佳方法是什么?
【问题讨论】:
标签: java jsp servlets jakarta-ee session-variables
目前我正在开发使用 JSP/Servlet 和 struts 框架的 web 项目。我们正在使用缓存机制。我想从特定事件的所有活动会话中清除一些会话属性(例如,在刷新缓存的情况下)。那么实现相同的最佳方法是什么?
【问题讨论】:
标签: java jsp servlets jakarta-ee session-variables
让我猜猜……你是在将缓存中的值存储到会话变量中,对吧?
最简单的方法是在每次需要时从缓存中检索值,并让缓存管理到期/重新加载等。这是缓存的责任。
换句话说,不要将缓存中的值存储到会话对象中。当您使用缓存时,它将毫无用处。
干杯
【讨论】:
您需要提供一个实现HttpSessionActivationListener(服务器api的一部分)接口的类并在web.xml中注册它。
然后您可以跟踪活动会话并使用该信息来访问会话并执行属性更新。实际上,实现类将是一个单例,因此您必须在会话跟踪期间仔细处理同步问题。
当然,如果您有一个具有多个节点的集群环境,属性更改的传播可能会相当复杂。
【讨论】: