0

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

4

2 回答 2

4

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

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

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

干杯

于 2009-06-26T03:38:43.940 回答
1

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

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

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

于 2009-06-26T04:20:20.267 回答